{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "train_hello_world_model.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aCZBFzjClURz",
        "colab_type": "text"
      },
      "source": [
        "# Train a basic TensorFlow Lite for Microcontrollers model\n",
        "\n",
        "This notebook demonstrates the process of training a 2.5 kB model using TensorFlow and converting it for use with TensorFlow Lite for Microcontrollers. \n",
        "\n",
        "Deep learning networks learn to model patterns in underlying data. Here, we're going to train a network to model data generated by a [sine](https://en.wikipedia.org/wiki/Sine) function. This will result in a model that can take a value, `x`, and predict its sine, `y`.\n",
        "\n",
        "The model created in this notebook is used in the [hello_world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) example for [TensorFlow Lite for MicroControllers](https://www.tensorflow.org/lite/microcontrollers/overview).\n",
        "\n",
        "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" />Run in Google Colab</a>\n",
        "  </td>\n",
        "  <td>\n",
        "    <a target=\"_blank\" href=\"https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/train/train_hello_world_model.ipynb\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" />View source on GitHub</a>\n",
        "  </td>\n",
        "</table>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0Cz6uV1zU_hV",
        "colab_type": "text"
      },
      "source": [
        "**Training is much faster using GPU acceleration.** Before you proceed, ensure you are using a GPU runtime by going to **Runtime -> Change runtime type** and set **Hardware accelerator: GPU**."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_UQblnrLd_ET",
        "colab_type": "text"
      },
      "source": [
        "## Configure Defaults"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5PYwRFppd-WB",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Define paths to model files\n",
        "import os\n",
        "MODELS_DIR = 'models/'\n",
        "if not os.path.exists(MODELS_DIR):\n",
        "    os.mkdir(MODELS_DIR)\n",
        "MODEL_TF = MODELS_DIR + 'model.pb'\n",
        "MODEL_NO_QUANT_TFLITE = MODELS_DIR + 'model_no_quant.tflite'\n",
        "MODEL_TFLITE = MODELS_DIR + 'model.tflite'\n",
        "MODEL_TFLITE_MICRO = MODELS_DIR + 'model.cc'"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "dh4AXGuHWeu1",
        "colab_type": "text"
      },
      "source": [
        "## Setup Environment\n",
        "\n",
        "Install Dependencies"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "colab_type": "code",
        "outputId": "e5cbcfca-b6a5-4a61-ac95-1a8d3fd5411b",
        "id": "cr1VLfotanf6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 85
        }
      },
      "source": [
        "! pip2 install gast==0.3.3\n",
        "! pip install -q tensorflow==2\n"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\u001b[K     |████████████████████████████████| 86.3MB 52kB/s \n",
            "\u001b[K     |████████████████████████████████| 450kB 46.2MB/s \n",
            "\u001b[K     |████████████████████████████████| 3.8MB 50.3MB/s \n",
            "\u001b[?25h  Building wheel for gast (setup.py) ... \u001b[?25l\u001b[?25hdone\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6rLYpvtg9P4o",
        "colab_type": "text"
      },
      "source": [
        "Set Seed for Repeatable Results"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EIH9NN1c9PJn",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Set a \"seed\" value, so we get the same random numbers each time we run this\n",
        "# notebook for reproducible results.\n",
        "# Numpy is a math library\n",
        "import numpy as np\n",
        "np.random.seed(1) # numpy seed\n",
        "# TensorFlow is an open source machine learning library\n",
        "import tensorflow as tf\n",
        "tf.random.set_seed(1) # tensorflow global random seed"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "tx9lOPWh9grN",
        "colab_type": "text"
      },
      "source": [
        "Import Dependencies"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "53PBJBv1jEtJ",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Keras is TensorFlow's high-level API for deep learning\n",
        "from tensorflow import keras\n",
        "# Matplotlib is a graphing library\n",
        "import matplotlib.pyplot as plt\n",
        "# Math is Python's math library\n",
        "import math"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "p-PuBEb6CMeo",
        "colab_type": "text"
      },
      "source": [
        "## Dataset"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "7gB0-dlNmLT-",
        "colab_type": "text"
      },
      "source": [
        "### 1. Generate Data\n",
        "\n",
        "The code in the following cell will generate a set of random `x` values, calculate their sine values, and display them on a graph."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "uKjg7QeMDsDx",
        "colab_type": "code",
        "outputId": "0afa45df-3766-467c-c92f-2428aa04f22b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        }
      },
      "source": [
        "# Number of sample datapoints\n",
        "SAMPLES = 1000\n",
        "\n",
        "# Generate a uniformly distributed set of random numbers in the range from\n",
        "# 0 to 2π, which covers a complete sine wave oscillation\n",
        "x_values = np.random.uniform(\n",
        "    low=0, high=2*math.pi, size=SAMPLES).astype(np.float32)\n",
        "\n",
        "# Shuffle the values to guarantee they're not in order\n",
        "np.random.shuffle(x_values)\n",
        "\n",
        "# Calculate the corresponding sine values\n",
        "y_values = np.sin(x_values).astype(np.float32)\n",
        "\n",
        "# Plot our data. The 'b.' argument tells the library to print blue dots.\n",
        "plt.plot(x_values, y_values, 'b.')\n",
        "plt.show()"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iWOlC7W_FYvA",
        "colab_type": "text"
      },
      "source": [
        "### 2. Add Noise\n",
        "Since it was generated directly by the sine function, our data fits a nice, smooth curve.\n",
        "\n",
        "However, machine learning models are good at extracting underlying meaning from messy, real world data. To demonstrate this, we can add some noise to our data to approximate something more life-like.\n",
        "\n",
        "In the following cell, we'll add some random noise to each value, then draw a new graph:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "i0FJe3Y-Gkac",
        "colab_type": "code",
        "outputId": "38886dba-5757-4c7e-bcd6-32c1eb82863e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        }
      },
      "source": [
        "# Add a small random number to each y value\n",
        "y_values += 0.1 * np.random.randn(*y_values.shape)\n",
        "\n",
        "# Plot our data\n",
        "plt.plot(x_values, y_values, 'b.')\n",
        "plt.show()"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Up8Xk_pMH4Rt",
        "colab_type": "text"
      },
      "source": [
        "### 3. Split the Data\n",
        "We now have a noisy dataset that approximates real world data. We'll be using this to train our model.\n",
        "\n",
        "To evaluate the accuracy of the model we train, we'll need to compare its predictions to real data and check how well they match up. This evaluation happens during training (where it is referred to as validation) and after training (referred to as testing) It's important in both cases that we use fresh data that was not already used to train the model.\n",
        "\n",
        "The data is split as follows:\n",
        "  1. Training: 60%\n",
        "  2. Validation: 20%\n",
        "  3. Testing: 20% \n",
        "\n",
        "The following code will split our data and then plots each set as a different color:\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "nNYko5L1keqZ",
        "colab_type": "code",
        "outputId": "a016bf4f-60a9-4c3f-9954-71218f7f4a25",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 265
        }
      },
      "source": [
        "# We'll use 60% of our data for training and 20% for testing. The remaining 20%\n",
        "# will be used for validation. Calculate the indices of each section.\n",
        "TRAIN_SPLIT =  int(0.6 * SAMPLES)\n",
        "TEST_SPLIT = int(0.2 * SAMPLES + TRAIN_SPLIT)\n",
        "\n",
        "# Use np.split to chop our data into three parts.\n",
        "# The second argument to np.split is an array of indices where the data will be\n",
        "# split. We provide two indices, so the data will be divided into three chunks.\n",
        "x_train, x_test, x_validate = np.split(x_values, [TRAIN_SPLIT, TEST_SPLIT])\n",
        "y_train, y_test, y_validate = np.split(y_values, [TRAIN_SPLIT, TEST_SPLIT])\n",
        "\n",
        "# Double check that our splits add up correctly\n",
        "assert (x_train.size + x_validate.size + x_test.size) ==  SAMPLES\n",
        "\n",
        "# Plot the data in each partition in different colors:\n",
        "plt.plot(x_train, y_train, 'b.', label=\"Train\")\n",
        "plt.plot(x_test, y_test, 'r.', label=\"Test\")\n",
        "plt.plot(x_validate, y_validate, 'y.', label=\"Validate\")\n",
        "plt.legend()\n",
        "plt.show()\n"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Wfdelu1TmgPk",
        "colab_type": "text"
      },
      "source": [
        "## Training"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "t5McVnHmNiDw",
        "colab_type": "text"
      },
      "source": [
        "### 1. Design the Model\n",
        "We're going to build a simple neural network model that will take an input value (in this case, `x`) and use it to predict a numeric output value (the sine of `x`). This type of problem is called a _regression_. It will use _layers_ of _neurons_ to attempt to learn any patterns underlying the training data, so it can make predictions.\n",
        "\n",
        "To begin with, we'll define two layers. The first layer takes a single input (our `x` value) and runs it through 8 neurons. Based on this input, each neuron will become _activated_ to a certain degree based on its internal state (its _weight_ and _bias_ values). A neuron's degree of activation is expressed as a number.\n",
        "\n",
        "The activation numbers from our first layer will be fed as inputs to our second layer, which is a single neuron. It will apply its own weights and bias to these inputs and calculate its own activation, which will be output as our `y` value.\n",
        "\n",
        "**Note:** To learn more about how neural networks function, you can explore the [Learn TensorFlow](https://codelabs.developers.google.com/codelabs/tensorflow-lab1-helloworld) codelabs.\n",
        "\n",
        "The code in the following cell defines our model using [Keras](https://www.tensorflow.org/guide/keras), TensorFlow's high-level API for creating deep learning networks. Once the network is defined, we _compile_ it, specifying parameters that determine how it will be trained:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gD60bE8cXQId",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# We'll use Keras to create a simple model architecture\n",
        "model_1 = tf.keras.Sequential()\n",
        "\n",
        "# First layer takes a scalar input and feeds it through 8 \"neurons\". The\n",
        "# neurons decide whether to activate based on the 'relu' activation function.\n",
        "model_1.add(keras.layers.Dense(8, activation='relu', input_shape=(1,)))\n",
        "\n",
        "# Final layer is a single neuron, since we want to output a single value\n",
        "model_1.add(keras.layers.Dense(1))\n",
        "\n",
        "# Compile the model using a standard optimizer and loss function for regression\n",
        "model_1.compile(optimizer='adam', loss='mse', metrics=['mae'])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "O0idLyRLQeGj",
        "colab_type": "text"
      },
      "source": [
        "### 2. Train the Model\n",
        "Once we've defined the model, we can use our data to _train_ it. Training involves passing an `x` value into the neural network, checking how far the network's output deviates from the expected `y` value, and adjusting the neurons' weights and biases so that the output is more likely to be correct the next time.\n",
        "\n",
        "Training runs this process on the full dataset multiple times, and each full run-through is known as an _epoch_. The number of epochs to run during training is a parameter we can set.\n",
        "\n",
        "During each epoch, data is run through the network in multiple _batches_. Each batch, several pieces of data are passed into the network, producing output values. These outputs' correctness is measured in aggregate and the network's weights and biases are adjusted accordingly, once per batch. The _batch size_ is also a parameter we can set.\n",
        "\n",
        "The code in the following cell uses the `x` and `y` values from our training data to train the model. It runs for 500 _epochs_, with 64 pieces of data in each _batch_. We also pass in some data for _validation_. As you will see when you run the cell, training can take a while to complete:\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "p8hQKr4cVOdE",
        "colab_type": "code",
        "outputId": "5e9fcc84-1733-4786-8fde-ce47a510cde6",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "# Train the model on our training data while validating on our validation set\n",
        "history_1 = model_1.fit(x_train, y_train, epochs=500, batch_size=64,\n",
        "                    validation_data=(x_validate, y_validate))"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Train on 600 samples, validate on 200 samples\n",
            "Epoch 1/500\n",
            "600/600 [==============================] - 1s 971us/sample - loss: 0.6936 - mae: 0.6897 - val_loss: 0.6396 - val_mae: 0.6501\n",
            "Epoch 2/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.5965 - mae: 0.6254 - val_loss: 0.5594 - val_mae: 0.6035\n",
            "Epoch 3/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.5240 - mae: 0.5830 - val_loss: 0.5021 - val_mae: 0.5765\n",
            "Epoch 4/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.4724 - mae: 0.5549 - val_loss: 0.4634 - val_mae: 0.5615\n",
            "Epoch 5/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.4392 - mae: 0.5390 - val_loss: 0.4375 - val_mae: 0.5533\n",
            "Epoch 6/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.4174 - mae: 0.5305 - val_loss: 0.4215 - val_mae: 0.5487\n",
            "Epoch 7/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.4026 - mae: 0.5244 - val_loss: 0.4119 - val_mae: 0.5464\n",
            "Epoch 8/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.3939 - mae: 0.5225 - val_loss: 0.4057 - val_mae: 0.5452\n",
            "Epoch 9/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.3880 - mae: 0.5216 - val_loss: 0.4015 - val_mae: 0.5439\n",
            "Epoch 10/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.3836 - mae: 0.5210 - val_loss: 0.3981 - val_mae: 0.5425\n",
            "Epoch 11/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.3802 - mae: 0.5205 - val_loss: 0.3950 - val_mae: 0.5412\n",
            "Epoch 12/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.3770 - mae: 0.5200 - val_loss: 0.3922 - val_mae: 0.5400\n",
            "Epoch 13/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.3741 - mae: 0.5189 - val_loss: 0.3894 - val_mae: 0.5385\n",
            "Epoch 14/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.3712 - mae: 0.5173 - val_loss: 0.3866 - val_mae: 0.5368\n",
            "Epoch 15/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.3686 - mae: 0.5162 - val_loss: 0.3837 - val_mae: 0.5354\n",
            "Epoch 16/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.3655 - mae: 0.5143 - val_loss: 0.3808 - val_mae: 0.5335\n",
            "Epoch 17/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.3627 - mae: 0.5122 - val_loss: 0.3777 - val_mae: 0.5314\n",
            "Epoch 18/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.3597 - mae: 0.5101 - val_loss: 0.3748 - val_mae: 0.5296\n",
            "Epoch 19/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.3567 - mae: 0.5080 - val_loss: 0.3717 - val_mae: 0.5276\n",
            "Epoch 20/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.3538 - mae: 0.5059 - val_loss: 0.3686 - val_mae: 0.5256\n",
            "Epoch 21/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.3507 - mae: 0.5037 - val_loss: 0.3654 - val_mae: 0.5234\n",
            "Epoch 22/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.3477 - mae: 0.5012 - val_loss: 0.3622 - val_mae: 0.5211\n",
            "Epoch 23/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.3447 - mae: 0.4993 - val_loss: 0.3591 - val_mae: 0.5195\n",
            "Epoch 24/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.3414 - mae: 0.4970 - val_loss: 0.3558 - val_mae: 0.5172\n",
            "Epoch 25/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.3385 - mae: 0.4949 - val_loss: 0.3526 - val_mae: 0.5153\n",
            "Epoch 26/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.3352 - mae: 0.4926 - val_loss: 0.3493 - val_mae: 0.5130\n",
            "Epoch 27/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.3321 - mae: 0.4904 - val_loss: 0.3461 - val_mae: 0.5110\n",
            "Epoch 28/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.3288 - mae: 0.4880 - val_loss: 0.3429 - val_mae: 0.5087\n",
            "Epoch 29/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.3257 - mae: 0.4854 - val_loss: 0.3395 - val_mae: 0.5064\n",
            "Epoch 30/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.3227 - mae: 0.4831 - val_loss: 0.3362 - val_mae: 0.5041\n",
            "Epoch 31/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.3195 - mae: 0.4806 - val_loss: 0.3330 - val_mae: 0.5018\n",
            "Epoch 32/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.3165 - mae: 0.4782 - val_loss: 0.3298 - val_mae: 0.4996\n",
            "Epoch 33/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.3133 - mae: 0.4760 - val_loss: 0.3267 - val_mae: 0.4976\n",
            "Epoch 34/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.3103 - mae: 0.4738 - val_loss: 0.3235 - val_mae: 0.4952\n",
            "Epoch 35/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.3072 - mae: 0.4713 - val_loss: 0.3203 - val_mae: 0.4930\n",
            "Epoch 36/500\n",
            "600/600 [==============================] - 0s 100us/sample - loss: 0.3042 - mae: 0.4694 - val_loss: 0.3173 - val_mae: 0.4913\n",
            "Epoch 37/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.3012 - mae: 0.4673 - val_loss: 0.3141 - val_mae: 0.4890\n",
            "Epoch 38/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.2981 - mae: 0.4651 - val_loss: 0.3111 - val_mae: 0.4869\n",
            "Epoch 39/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.2952 - mae: 0.4625 - val_loss: 0.3078 - val_mae: 0.4841\n",
            "Epoch 40/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.2921 - mae: 0.4602 - val_loss: 0.3049 - val_mae: 0.4822\n",
            "Epoch 41/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.2891 - mae: 0.4585 - val_loss: 0.3021 - val_mae: 0.4810\n",
            "Epoch 42/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.2861 - mae: 0.4568 - val_loss: 0.2991 - val_mae: 0.4790\n",
            "Epoch 43/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.2832 - mae: 0.4546 - val_loss: 0.2961 - val_mae: 0.4767\n",
            "Epoch 44/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.2803 - mae: 0.4523 - val_loss: 0.2931 - val_mae: 0.4741\n",
            "Epoch 45/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.2775 - mae: 0.4503 - val_loss: 0.2902 - val_mae: 0.4723\n",
            "Epoch 46/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.2746 - mae: 0.4482 - val_loss: 0.2873 - val_mae: 0.4701\n",
            "Epoch 47/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.2719 - mae: 0.4464 - val_loss: 0.2846 - val_mae: 0.4685\n",
            "Epoch 48/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.2691 - mae: 0.4444 - val_loss: 0.2818 - val_mae: 0.4666\n",
            "Epoch 49/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.2663 - mae: 0.4425 - val_loss: 0.2791 - val_mae: 0.4646\n",
            "Epoch 50/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.2636 - mae: 0.4404 - val_loss: 0.2764 - val_mae: 0.4625\n",
            "Epoch 51/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2610 - mae: 0.4382 - val_loss: 0.2736 - val_mae: 0.4599\n",
            "Epoch 52/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.2583 - mae: 0.4361 - val_loss: 0.2711 - val_mae: 0.4580\n",
            "Epoch 53/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.2558 - mae: 0.4344 - val_loss: 0.2685 - val_mae: 0.4561\n",
            "Epoch 54/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.2532 - mae: 0.4326 - val_loss: 0.2659 - val_mae: 0.4539\n",
            "Epoch 55/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2508 - mae: 0.4307 - val_loss: 0.2634 - val_mae: 0.4518\n",
            "Epoch 56/500\n",
            "600/600 [==============================] - 0s 65us/sample - loss: 0.2483 - mae: 0.4288 - val_loss: 0.2609 - val_mae: 0.4499\n",
            "Epoch 57/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2459 - mae: 0.4271 - val_loss: 0.2586 - val_mae: 0.4485\n",
            "Epoch 58/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.2436 - mae: 0.4255 - val_loss: 0.2561 - val_mae: 0.4464\n",
            "Epoch 59/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.2411 - mae: 0.4239 - val_loss: 0.2540 - val_mae: 0.4451\n",
            "Epoch 60/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.2387 - mae: 0.4220 - val_loss: 0.2516 - val_mae: 0.4431\n",
            "Epoch 61/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.2365 - mae: 0.4202 - val_loss: 0.2493 - val_mae: 0.4411\n",
            "Epoch 62/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.2343 - mae: 0.4186 - val_loss: 0.2472 - val_mae: 0.4395\n",
            "Epoch 63/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.2322 - mae: 0.4169 - val_loss: 0.2450 - val_mae: 0.4375\n",
            "Epoch 64/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.2301 - mae: 0.4151 - val_loss: 0.2428 - val_mae: 0.4355\n",
            "Epoch 65/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.2280 - mae: 0.4134 - val_loss: 0.2408 - val_mae: 0.4338\n",
            "Epoch 66/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.2260 - mae: 0.4118 - val_loss: 0.2388 - val_mae: 0.4323\n",
            "Epoch 67/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.2241 - mae: 0.4104 - val_loss: 0.2369 - val_mae: 0.4308\n",
            "Epoch 68/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2222 - mae: 0.4089 - val_loss: 0.2351 - val_mae: 0.4293\n",
            "Epoch 69/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.2204 - mae: 0.4076 - val_loss: 0.2334 - val_mae: 0.4280\n",
            "Epoch 70/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2188 - mae: 0.4062 - val_loss: 0.2314 - val_mae: 0.4255\n",
            "Epoch 71/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.2168 - mae: 0.4043 - val_loss: 0.2297 - val_mae: 0.4246\n",
            "Epoch 72/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.2151 - mae: 0.4031 - val_loss: 0.2280 - val_mae: 0.4231\n",
            "Epoch 73/500\n",
            "600/600 [==============================] - 0s 40us/sample - loss: 0.2135 - mae: 0.4019 - val_loss: 0.2265 - val_mae: 0.4224\n",
            "Epoch 74/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.2120 - mae: 0.4007 - val_loss: 0.2247 - val_mae: 0.4203\n",
            "Epoch 75/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.2102 - mae: 0.3992 - val_loss: 0.2233 - val_mae: 0.4194\n",
            "Epoch 76/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.2087 - mae: 0.3980 - val_loss: 0.2216 - val_mae: 0.4178\n",
            "Epoch 77/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.2071 - mae: 0.3965 - val_loss: 0.2199 - val_mae: 0.4158\n",
            "Epoch 78/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.2056 - mae: 0.3951 - val_loss: 0.2185 - val_mae: 0.4144\n",
            "Epoch 79/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.2044 - mae: 0.3938 - val_loss: 0.2170 - val_mae: 0.4122\n",
            "Epoch 80/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.2029 - mae: 0.3926 - val_loss: 0.2159 - val_mae: 0.4123\n",
            "Epoch 81/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.2015 - mae: 0.3915 - val_loss: 0.2145 - val_mae: 0.4108\n",
            "Epoch 82/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.2002 - mae: 0.3902 - val_loss: 0.2131 - val_mae: 0.4091\n",
            "Epoch 83/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1989 - mae: 0.3890 - val_loss: 0.2119 - val_mae: 0.4081\n",
            "Epoch 84/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1977 - mae: 0.3878 - val_loss: 0.2107 - val_mae: 0.4071\n",
            "Epoch 85/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1965 - mae: 0.3867 - val_loss: 0.2095 - val_mae: 0.4057\n",
            "Epoch 86/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1953 - mae: 0.3857 - val_loss: 0.2082 - val_mae: 0.4044\n",
            "Epoch 87/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1941 - mae: 0.3843 - val_loss: 0.2072 - val_mae: 0.4032\n",
            "Epoch 88/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1930 - mae: 0.3834 - val_loss: 0.2062 - val_mae: 0.4028\n",
            "Epoch 89/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1920 - mae: 0.3825 - val_loss: 0.2053 - val_mae: 0.4018\n",
            "Epoch 90/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.1913 - mae: 0.3819 - val_loss: 0.2046 - val_mae: 0.4018\n",
            "Epoch 91/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1902 - mae: 0.3808 - val_loss: 0.2033 - val_mae: 0.3994\n",
            "Epoch 92/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1892 - mae: 0.3796 - val_loss: 0.2025 - val_mae: 0.3989\n",
            "Epoch 93/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1882 - mae: 0.3786 - val_loss: 0.2015 - val_mae: 0.3970\n",
            "Epoch 94/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1875 - mae: 0.3776 - val_loss: 0.2006 - val_mae: 0.3959\n",
            "Epoch 95/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.1870 - mae: 0.3768 - val_loss: 0.1998 - val_mae: 0.3941\n",
            "Epoch 96/500\n",
            "600/600 [==============================] - 0s 67us/sample - loss: 0.1861 - mae: 0.3760 - val_loss: 0.1992 - val_mae: 0.3947\n",
            "Epoch 97/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1852 - mae: 0.3751 - val_loss: 0.1984 - val_mae: 0.3937\n",
            "Epoch 98/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1843 - mae: 0.3742 - val_loss: 0.1980 - val_mae: 0.3939\n",
            "Epoch 99/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1837 - mae: 0.3737 - val_loss: 0.1976 - val_mae: 0.3940\n",
            "Epoch 100/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1832 - mae: 0.3733 - val_loss: 0.1970 - val_mae: 0.3936\n",
            "Epoch 101/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1828 - mae: 0.3727 - val_loss: 0.1960 - val_mae: 0.3910\n",
            "Epoch 102/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1820 - mae: 0.3717 - val_loss: 0.1956 - val_mae: 0.3913\n",
            "Epoch 103/500\n",
            "600/600 [==============================] - 0s 64us/sample - loss: 0.1812 - mae: 0.3708 - val_loss: 0.1950 - val_mae: 0.3903\n",
            "Epoch 104/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1806 - mae: 0.3701 - val_loss: 0.1946 - val_mae: 0.3898\n",
            "Epoch 105/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.1802 - mae: 0.3695 - val_loss: 0.1939 - val_mae: 0.3886\n",
            "Epoch 106/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1795 - mae: 0.3686 - val_loss: 0.1932 - val_mae: 0.3871\n",
            "Epoch 107/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1790 - mae: 0.3679 - val_loss: 0.1928 - val_mae: 0.3866\n",
            "Epoch 108/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1786 - mae: 0.3674 - val_loss: 0.1924 - val_mae: 0.3864\n",
            "Epoch 109/500\n",
            "600/600 [==============================] - 0s 40us/sample - loss: 0.1783 - mae: 0.3667 - val_loss: 0.1919 - val_mae: 0.3849\n",
            "Epoch 110/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1781 - mae: 0.3666 - val_loss: 0.1919 - val_mae: 0.3861\n",
            "Epoch 111/500\n",
            "600/600 [==============================] - 0s 68us/sample - loss: 0.1774 - mae: 0.3658 - val_loss: 0.1912 - val_mae: 0.3843\n",
            "Epoch 112/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1770 - mae: 0.3653 - val_loss: 0.1911 - val_mae: 0.3846\n",
            "Epoch 113/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1766 - mae: 0.3647 - val_loss: 0.1906 - val_mae: 0.3833\n",
            "Epoch 114/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1763 - mae: 0.3642 - val_loss: 0.1903 - val_mae: 0.3831\n",
            "Epoch 115/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1758 - mae: 0.3636 - val_loss: 0.1898 - val_mae: 0.3817\n",
            "Epoch 116/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1755 - mae: 0.3630 - val_loss: 0.1897 - val_mae: 0.3821\n",
            "Epoch 117/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1752 - mae: 0.3627 - val_loss: 0.1893 - val_mae: 0.3810\n",
            "Epoch 118/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1749 - mae: 0.3621 - val_loss: 0.1890 - val_mae: 0.3805\n",
            "Epoch 119/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1747 - mae: 0.3617 - val_loss: 0.1888 - val_mae: 0.3802\n",
            "Epoch 120/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1743 - mae: 0.3612 - val_loss: 0.1885 - val_mae: 0.3794\n",
            "Epoch 121/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1743 - mae: 0.3610 - val_loss: 0.1885 - val_mae: 0.3803\n",
            "Epoch 122/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.1740 - mae: 0.3608 - val_loss: 0.1884 - val_mae: 0.3802\n",
            "Epoch 123/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1736 - mae: 0.3602 - val_loss: 0.1879 - val_mae: 0.3786\n",
            "Epoch 124/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1737 - mae: 0.3597 - val_loss: 0.1876 - val_mae: 0.3765\n",
            "Epoch 125/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1738 - mae: 0.3597 - val_loss: 0.1876 - val_mae: 0.3780\n",
            "Epoch 126/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1734 - mae: 0.3591 - val_loss: 0.1872 - val_mae: 0.3762\n",
            "Epoch 127/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1727 - mae: 0.3583 - val_loss: 0.1873 - val_mae: 0.3775\n",
            "Epoch 128/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1726 - mae: 0.3583 - val_loss: 0.1872 - val_mae: 0.3776\n",
            "Epoch 129/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1724 - mae: 0.3579 - val_loss: 0.1869 - val_mae: 0.3763\n",
            "Epoch 130/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1723 - mae: 0.3575 - val_loss: 0.1867 - val_mae: 0.3757\n",
            "Epoch 131/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1722 - mae: 0.3573 - val_loss: 0.1866 - val_mae: 0.3759\n",
            "Epoch 132/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1720 - mae: 0.3572 - val_loss: 0.1868 - val_mae: 0.3770\n",
            "Epoch 133/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1721 - mae: 0.3570 - val_loss: 0.1864 - val_mae: 0.3754\n",
            "Epoch 134/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1717 - mae: 0.3566 - val_loss: 0.1864 - val_mae: 0.3754\n",
            "Epoch 135/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1717 - mae: 0.3563 - val_loss: 0.1861 - val_mae: 0.3741\n",
            "Epoch 136/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1715 - mae: 0.3559 - val_loss: 0.1861 - val_mae: 0.3744\n",
            "Epoch 137/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1714 - mae: 0.3558 - val_loss: 0.1861 - val_mae: 0.3748\n",
            "Epoch 138/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1713 - mae: 0.3555 - val_loss: 0.1859 - val_mae: 0.3737\n",
            "Epoch 139/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1712 - mae: 0.3551 - val_loss: 0.1857 - val_mae: 0.3731\n",
            "Epoch 140/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1712 - mae: 0.3551 - val_loss: 0.1857 - val_mae: 0.3732\n",
            "Epoch 141/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1710 - mae: 0.3547 - val_loss: 0.1856 - val_mae: 0.3724\n",
            "Epoch 142/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1713 - mae: 0.3546 - val_loss: 0.1855 - val_mae: 0.3718\n",
            "Epoch 143/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1711 - mae: 0.3545 - val_loss: 0.1857 - val_mae: 0.3740\n",
            "Epoch 144/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1708 - mae: 0.3545 - val_loss: 0.1856 - val_mae: 0.3733\n",
            "Epoch 145/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1708 - mae: 0.3541 - val_loss: 0.1854 - val_mae: 0.3717\n",
            "Epoch 146/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1707 - mae: 0.3539 - val_loss: 0.1854 - val_mae: 0.3720\n",
            "Epoch 147/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1706 - mae: 0.3539 - val_loss: 0.1854 - val_mae: 0.3725\n",
            "Epoch 148/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1706 - mae: 0.3537 - val_loss: 0.1853 - val_mae: 0.3722\n",
            "Epoch 149/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1705 - mae: 0.3536 - val_loss: 0.1853 - val_mae: 0.3725\n",
            "Epoch 150/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1707 - mae: 0.3537 - val_loss: 0.1853 - val_mae: 0.3720\n",
            "Epoch 151/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1704 - mae: 0.3532 - val_loss: 0.1851 - val_mae: 0.3704\n",
            "Epoch 152/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1705 - mae: 0.3530 - val_loss: 0.1851 - val_mae: 0.3709\n",
            "Epoch 153/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1703 - mae: 0.3529 - val_loss: 0.1851 - val_mae: 0.3714\n",
            "Epoch 154/500\n",
            "600/600 [==============================] - 0s 63us/sample - loss: 0.1703 - mae: 0.3530 - val_loss: 0.1852 - val_mae: 0.3720\n",
            "Epoch 155/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1703 - mae: 0.3529 - val_loss: 0.1851 - val_mae: 0.3713\n",
            "Epoch 156/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1702 - mae: 0.3526 - val_loss: 0.1850 - val_mae: 0.3711\n",
            "Epoch 157/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1701 - mae: 0.3526 - val_loss: 0.1852 - val_mae: 0.3719\n",
            "Epoch 158/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1701 - mae: 0.3528 - val_loss: 0.1852 - val_mae: 0.3721\n",
            "Epoch 159/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1705 - mae: 0.3528 - val_loss: 0.1849 - val_mae: 0.3698\n",
            "Epoch 160/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1701 - mae: 0.3525 - val_loss: 0.1852 - val_mae: 0.3723\n",
            "Epoch 161/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1701 - mae: 0.3528 - val_loss: 0.1851 - val_mae: 0.3721\n",
            "Epoch 162/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1701 - mae: 0.3527 - val_loss: 0.1851 - val_mae: 0.3717\n",
            "Epoch 163/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1701 - mae: 0.3527 - val_loss: 0.1852 - val_mae: 0.3722\n",
            "Epoch 164/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1704 - mae: 0.3531 - val_loss: 0.1852 - val_mae: 0.3722\n",
            "Epoch 165/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3525 - val_loss: 0.1847 - val_mae: 0.3697\n",
            "Epoch 166/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1702 - mae: 0.3518 - val_loss: 0.1847 - val_mae: 0.3694\n",
            "Epoch 167/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1704 - mae: 0.3519 - val_loss: 0.1847 - val_mae: 0.3680\n",
            "Epoch 168/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1699 - mae: 0.3516 - val_loss: 0.1848 - val_mae: 0.3704\n",
            "Epoch 169/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1700 - mae: 0.3522 - val_loss: 0.1851 - val_mae: 0.3718\n",
            "Epoch 170/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1700 - mae: 0.3524 - val_loss: 0.1851 - val_mae: 0.3720\n",
            "Epoch 171/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1699 - mae: 0.3522 - val_loss: 0.1848 - val_mae: 0.3702\n",
            "Epoch 172/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3518 - val_loss: 0.1849 - val_mae: 0.3711\n",
            "Epoch 173/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1699 - mae: 0.3521 - val_loss: 0.1849 - val_mae: 0.3710\n",
            "Epoch 174/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1699 - mae: 0.3521 - val_loss: 0.1849 - val_mae: 0.3711\n",
            "Epoch 175/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3518 - val_loss: 0.1847 - val_mae: 0.3699\n",
            "Epoch 176/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1699 - mae: 0.3517 - val_loss: 0.1847 - val_mae: 0.3701\n",
            "Epoch 177/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1702 - mae: 0.3524 - val_loss: 0.1852 - val_mae: 0.3721\n",
            "Epoch 178/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.1700 - mae: 0.3523 - val_loss: 0.1849 - val_mae: 0.3710\n",
            "Epoch 179/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3517 - val_loss: 0.1847 - val_mae: 0.3701\n",
            "Epoch 180/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1703 - mae: 0.3515 - val_loss: 0.1846 - val_mae: 0.3681\n",
            "Epoch 181/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3515 - val_loss: 0.1849 - val_mae: 0.3708\n",
            "Epoch 182/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1698 - mae: 0.3518 - val_loss: 0.1850 - val_mae: 0.3715\n",
            "Epoch 183/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3520 - val_loss: 0.1848 - val_mae: 0.3708\n",
            "Epoch 184/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3516 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 185/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1699 - mae: 0.3514 - val_loss: 0.1846 - val_mae: 0.3698\n",
            "Epoch 186/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1700 - mae: 0.3517 - val_loss: 0.1848 - val_mae: 0.3706\n",
            "Epoch 187/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1696 - mae: 0.3513 - val_loss: 0.1846 - val_mae: 0.3693\n",
            "Epoch 188/500\n",
            "600/600 [==============================] - 0s 63us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1845 - val_mae: 0.3687\n",
            "Epoch 189/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3675\n",
            "Epoch 190/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3688\n",
            "Epoch 191/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3693\n",
            "Epoch 192/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1848 - val_mae: 0.3706\n",
            "Epoch 193/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1700 - mae: 0.3520 - val_loss: 0.1850 - val_mae: 0.3714\n",
            "Epoch 194/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1845 - val_mae: 0.3684\n",
            "Epoch 195/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3687\n",
            "Epoch 196/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3691\n",
            "Epoch 197/500\n",
            "600/600 [==============================] - 0s 76us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3684\n",
            "Epoch 198/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3683\n",
            "Epoch 199/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1698 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3703\n",
            "Epoch 200/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 201/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3694\n",
            "Epoch 202/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1847 - val_mae: 0.3696\n",
            "Epoch 203/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1850 - val_mae: 0.3708\n",
            "Epoch 204/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3513 - val_loss: 0.1847 - val_mae: 0.3697\n",
            "Epoch 205/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3685\n",
            "Epoch 206/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1699 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3669\n",
            "Epoch 207/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1845 - val_mae: 0.3680\n",
            "Epoch 208/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 209/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 210/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 211/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1699 - mae: 0.3513 - val_loss: 0.1849 - val_mae: 0.3703\n",
            "Epoch 212/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3693\n",
            "Epoch 213/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 214/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3681\n",
            "Epoch 215/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3698\n",
            "Epoch 216/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3702\n",
            "Epoch 217/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3694\n",
            "Epoch 218/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3699\n",
            "Epoch 219/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3700\n",
            "Epoch 220/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1848 - val_mae: 0.3705\n",
            "Epoch 221/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1847 - val_mae: 0.3699\n",
            "Epoch 222/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1698 - mae: 0.3515 - val_loss: 0.1848 - val_mae: 0.3707\n",
            "Epoch 223/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3514 - val_loss: 0.1845 - val_mae: 0.3695\n",
            "Epoch 224/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3691\n",
            "Epoch 225/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3695\n",
            "Epoch 226/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3691\n",
            "Epoch 227/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1846 - val_mae: 0.3699\n",
            "Epoch 228/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1844 - val_mae: 0.3685\n",
            "Epoch 229/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3691\n",
            "Epoch 230/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3696\n",
            "Epoch 231/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3689\n",
            "Epoch 232/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3697\n",
            "Epoch 233/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3689\n",
            "Epoch 234/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3694\n",
            "Epoch 235/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3693\n",
            "Epoch 236/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1700 - mae: 0.3506 - val_loss: 0.1844 - val_mae: 0.3673\n",
            "Epoch 237/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1844 - val_mae: 0.3676\n",
            "Epoch 238/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3690\n",
            "Epoch 239/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3691\n",
            "Epoch 240/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1844 - val_mae: 0.3676\n",
            "Epoch 241/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1844 - val_mae: 0.3674\n",
            "Epoch 242/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3696\n",
            "Epoch 243/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3685\n",
            "Epoch 244/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3689\n",
            "Epoch 245/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1701 - mae: 0.3519 - val_loss: 0.1856 - val_mae: 0.3727\n",
            "Epoch 246/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1701 - mae: 0.3519 - val_loss: 0.1850 - val_mae: 0.3708\n",
            "Epoch 247/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3516 - val_loss: 0.1848 - val_mae: 0.3702\n",
            "Epoch 248/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1844 - val_mae: 0.3671\n",
            "Epoch 249/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3506 - val_loss: 0.1844 - val_mae: 0.3682\n",
            "Epoch 250/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1844 - val_mae: 0.3676\n",
            "Epoch 251/500\n",
            "600/600 [==============================] - 0s 61us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1844 - val_mae: 0.3676\n",
            "Epoch 252/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1695 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3687\n",
            "Epoch 253/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3698\n",
            "Epoch 254/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1849 - val_mae: 0.3704\n",
            "Epoch 255/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1698 - mae: 0.3514 - val_loss: 0.1848 - val_mae: 0.3700\n",
            "Epoch 256/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3680\n",
            "Epoch 257/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1844 - val_mae: 0.3679\n",
            "Epoch 258/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3685\n",
            "Epoch 259/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3689\n",
            "Epoch 260/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3698\n",
            "Epoch 261/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3698\n",
            "Epoch 262/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1845 - val_mae: 0.3684\n",
            "Epoch 263/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3685\n",
            "Epoch 264/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3692\n",
            "Epoch 265/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1848 - val_mae: 0.3700\n",
            "Epoch 266/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3691\n",
            "Epoch 267/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3696\n",
            "Epoch 268/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3681\n",
            "Epoch 269/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3686\n",
            "Epoch 270/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3699\n",
            "Epoch 271/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1699 - mae: 0.3516 - val_loss: 0.1848 - val_mae: 0.3701\n",
            "Epoch 272/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3683\n",
            "Epoch 273/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1848 - val_mae: 0.3699\n",
            "Epoch 274/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3697\n",
            "Epoch 275/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 276/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3693\n",
            "Epoch 277/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3679\n",
            "Epoch 278/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 279/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 280/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 281/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1698 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3700\n",
            "Epoch 282/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3694\n",
            "Epoch 283/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 284/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 285/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3682\n",
            "Epoch 286/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1699 - mae: 0.3501 - val_loss: 0.1846 - val_mae: 0.3664\n",
            "Epoch 287/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 288/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 289/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 290/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3689\n",
            "Epoch 291/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3694\n",
            "Epoch 292/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 293/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1701 - mae: 0.3513 - val_loss: 0.1850 - val_mae: 0.3705\n",
            "Epoch 294/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1702 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 295/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1849 - val_mae: 0.3702\n",
            "Epoch 296/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3699\n",
            "Epoch 297/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3691\n",
            "Epoch 298/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1848 - val_mae: 0.3695\n",
            "Epoch 299/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3690\n",
            "Epoch 300/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 301/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3685\n",
            "Epoch 302/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3507 - val_loss: 0.1848 - val_mae: 0.3696\n",
            "Epoch 303/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 304/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1700 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3667\n",
            "Epoch 305/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3679\n",
            "Epoch 306/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1699 - mae: 0.3509 - val_loss: 0.1850 - val_mae: 0.3706\n",
            "Epoch 307/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1847 - val_mae: 0.3694\n",
            "Epoch 308/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 309/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3691\n",
            "Epoch 310/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3680\n",
            "Epoch 311/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1699 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 312/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1694 - mae: 0.3502 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 313/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1850 - val_mae: 0.3706\n",
            "Epoch 314/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 315/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3674\n",
            "Epoch 316/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3680\n",
            "Epoch 317/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3675\n",
            "Epoch 318/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1845 - val_mae: 0.3674\n",
            "Epoch 319/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3499 - val_loss: 0.1845 - val_mae: 0.3672\n",
            "Epoch 320/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3685\n",
            "Epoch 321/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3695\n",
            "Epoch 322/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 323/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3676\n",
            "Epoch 324/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3680\n",
            "Epoch 325/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 326/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 327/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 328/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 329/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 330/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3691\n",
            "Epoch 331/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1699 - mae: 0.3512 - val_loss: 0.1847 - val_mae: 0.3697\n",
            "Epoch 332/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 333/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1702 - mae: 0.3514 - val_loss: 0.1847 - val_mae: 0.3696\n",
            "Epoch 334/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 335/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3680\n",
            "Epoch 336/500\n",
            "600/600 [==============================] - 0s 40us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3675\n",
            "Epoch 337/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 338/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 339/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1700 - mae: 0.3513 - val_loss: 0.1851 - val_mae: 0.3711\n",
            "Epoch 340/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3689\n",
            "Epoch 341/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 342/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1701 - mae: 0.3509 - val_loss: 0.1848 - val_mae: 0.3700\n",
            "Epoch 343/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 344/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3682\n",
            "Epoch 345/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1847 - val_mae: 0.3690\n",
            "Epoch 346/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3511 - val_loss: 0.1851 - val_mae: 0.3711\n",
            "Epoch 347/500\n",
            "600/600 [==============================] - 0s 65us/sample - loss: 0.1697 - mae: 0.3513 - val_loss: 0.1849 - val_mae: 0.3701\n",
            "Epoch 348/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1694 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 349/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3672\n",
            "Epoch 350/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1698 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 351/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3679\n",
            "Epoch 352/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 353/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1849 - val_mae: 0.3701\n",
            "Epoch 354/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3689\n",
            "Epoch 355/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3685\n",
            "Epoch 356/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1701 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3664\n",
            "Epoch 357/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1699 - mae: 0.3503 - val_loss: 0.1847 - val_mae: 0.3689\n",
            "Epoch 358/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 359/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1695 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 360/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3681\n",
            "Epoch 361/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3685\n",
            "Epoch 362/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3676\n",
            "Epoch 363/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1848 - val_mae: 0.3695\n",
            "Epoch 364/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3688\n",
            "Epoch 365/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1849 - val_mae: 0.3699\n",
            "Epoch 366/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1849 - val_mae: 0.3701\n",
            "Epoch 367/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 368/500\n",
            "600/600 [==============================] - 0s 39us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 369/500\n",
            "600/600 [==============================] - 0s 40us/sample - loss: 0.1698 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 370/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3507 - val_loss: 0.1848 - val_mae: 0.3697\n",
            "Epoch 371/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 372/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 373/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3689\n",
            "Epoch 374/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 375/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3691\n",
            "Epoch 376/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 377/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 378/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1700 - mae: 0.3507 - val_loss: 0.1847 - val_mae: 0.3690\n",
            "Epoch 379/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3670\n",
            "Epoch 380/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 381/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3691\n",
            "Epoch 382/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3690\n",
            "Epoch 383/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3693\n",
            "Epoch 384/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1850 - val_mae: 0.3703\n",
            "Epoch 385/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.1699 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3689\n",
            "Epoch 386/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1851 - val_mae: 0.3709\n",
            "Epoch 387/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3688\n",
            "Epoch 388/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 389/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1697 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3700\n",
            "Epoch 390/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3694\n",
            "Epoch 391/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1701 - mae: 0.3505 - val_loss: 0.1846 - val_mae: 0.3666\n",
            "Epoch 392/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1846 - val_mae: 0.3681\n",
            "Epoch 393/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1848 - val_mae: 0.3698\n",
            "Epoch 394/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1847 - val_mae: 0.3693\n",
            "Epoch 395/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1699 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3675\n",
            "Epoch 396/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1695 - mae: 0.3501 - val_loss: 0.1847 - val_mae: 0.3693\n",
            "Epoch 397/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3698\n",
            "Epoch 398/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 399/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1695 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3673\n",
            "Epoch 400/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3667\n",
            "Epoch 401/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3681\n",
            "Epoch 402/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 403/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 404/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1699 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3667\n",
            "Epoch 405/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 406/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1847 - val_mae: 0.3689\n",
            "Epoch 407/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1847 - val_mae: 0.3684\n",
            "Epoch 408/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3673\n",
            "Epoch 409/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3499 - val_loss: 0.1846 - val_mae: 0.3678\n",
            "Epoch 410/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3682\n",
            "Epoch 411/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3499 - val_loss: 0.1846 - val_mae: 0.3668\n",
            "Epoch 412/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3496 - val_loss: 0.1846 - val_mae: 0.3673\n",
            "Epoch 413/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1852 - val_mae: 0.3710\n",
            "Epoch 414/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1703 - mae: 0.3519 - val_loss: 0.1854 - val_mae: 0.3716\n",
            "Epoch 415/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1695 - mae: 0.3511 - val_loss: 0.1846 - val_mae: 0.3686\n",
            "Epoch 416/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1696 - mae: 0.3499 - val_loss: 0.1845 - val_mae: 0.3666\n",
            "Epoch 417/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1700 - mae: 0.3496 - val_loss: 0.1846 - val_mae: 0.3665\n",
            "Epoch 418/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1694 - mae: 0.3497 - val_loss: 0.1847 - val_mae: 0.3687\n",
            "Epoch 419/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1849 - val_mae: 0.3698\n",
            "Epoch 420/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1697 - mae: 0.3509 - val_loss: 0.1850 - val_mae: 0.3702\n",
            "Epoch 421/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1849 - val_mae: 0.3700\n",
            "Epoch 422/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3686\n",
            "Epoch 423/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 424/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3498 - val_loss: 0.1845 - val_mae: 0.3668\n",
            "Epoch 425/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3497 - val_loss: 0.1845 - val_mae: 0.3671\n",
            "Epoch 426/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1696 - mae: 0.3497 - val_loss: 0.1846 - val_mae: 0.3676\n",
            "Epoch 427/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3500 - val_loss: 0.1847 - val_mae: 0.3683\n",
            "Epoch 428/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1847 - val_mae: 0.3686\n",
            "Epoch 429/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1848 - val_mae: 0.3694\n",
            "Epoch 430/500\n",
            "600/600 [==============================] - 0s 40us/sample - loss: 0.1698 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3675\n",
            "Epoch 431/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3498 - val_loss: 0.1846 - val_mae: 0.3675\n",
            "Epoch 432/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1850 - val_mae: 0.3703\n",
            "Epoch 433/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1699 - mae: 0.3514 - val_loss: 0.1853 - val_mae: 0.3713\n",
            "Epoch 434/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1700 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3686\n",
            "Epoch 435/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1699 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3689\n",
            "Epoch 436/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1849 - val_mae: 0.3703\n",
            "Epoch 437/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3696\n",
            "Epoch 438/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1846 - val_mae: 0.3691\n",
            "Epoch 439/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 440/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3683\n",
            "Epoch 441/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3670\n",
            "Epoch 442/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 443/500\n",
            "600/600 [==============================] - 0s 82us/sample - loss: 0.1704 - mae: 0.3519 - val_loss: 0.1849 - val_mae: 0.3702\n",
            "Epoch 444/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3685\n",
            "Epoch 445/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1697 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3679\n",
            "Epoch 446/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1697 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3673\n",
            "Epoch 447/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1700 - mae: 0.3501 - val_loss: 0.1845 - val_mae: 0.3671\n",
            "Epoch 448/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1705 - mae: 0.3515 - val_loss: 0.1852 - val_mae: 0.3713\n",
            "Epoch 449/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 450/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 451/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 452/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3681\n",
            "Epoch 453/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 454/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1696 - mae: 0.3504 - val_loss: 0.1846 - val_mae: 0.3686\n",
            "Epoch 455/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3682\n",
            "Epoch 456/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3508 - val_loss: 0.1847 - val_mae: 0.3695\n",
            "Epoch 457/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1697 - mae: 0.3511 - val_loss: 0.1847 - val_mae: 0.3697\n",
            "Epoch 458/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3684\n",
            "Epoch 459/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3677\n",
            "Epoch 460/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1696 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3692\n",
            "Epoch 461/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3696\n",
            "Epoch 462/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1846 - val_mae: 0.3692\n",
            "Epoch 463/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3674\n",
            "Epoch 464/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3685\n",
            "Epoch 465/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3695\n",
            "Epoch 466/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1850 - val_mae: 0.3706\n",
            "Epoch 467/500\n",
            "600/600 [==============================] - 0s 40us/sample - loss: 0.1698 - mae: 0.3512 - val_loss: 0.1847 - val_mae: 0.3698\n",
            "Epoch 468/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1700 - mae: 0.3519 - val_loss: 0.1850 - val_mae: 0.3712\n",
            "Epoch 469/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1697 - mae: 0.3515 - val_loss: 0.1847 - val_mae: 0.3700\n",
            "Epoch 470/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1695 - mae: 0.3508 - val_loss: 0.1845 - val_mae: 0.3683\n",
            "Epoch 471/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3675\n",
            "Epoch 472/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 473/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1846 - val_mae: 0.3689\n",
            "Epoch 474/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1696 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3682\n",
            "Epoch 475/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1697 - mae: 0.3506 - val_loss: 0.1845 - val_mae: 0.3683\n",
            "Epoch 476/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1847 - val_mae: 0.3697\n",
            "Epoch 477/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3511 - val_loss: 0.1848 - val_mae: 0.3701\n",
            "Epoch 478/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3512 - val_loss: 0.1848 - val_mae: 0.3702\n",
            "Epoch 479/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3507 - val_loss: 0.1845 - val_mae: 0.3676\n",
            "Epoch 480/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1699 - mae: 0.3502 - val_loss: 0.1845 - val_mae: 0.3669\n",
            "Epoch 481/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1697 - mae: 0.3500 - val_loss: 0.1845 - val_mae: 0.3676\n",
            "Epoch 482/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1850 - val_mae: 0.3706\n",
            "Epoch 483/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1698 - mae: 0.3516 - val_loss: 0.1853 - val_mae: 0.3716\n",
            "Epoch 484/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1699 - mae: 0.3515 - val_loss: 0.1847 - val_mae: 0.3692\n",
            "Epoch 485/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3507 - val_loss: 0.1846 - val_mae: 0.3687\n",
            "Epoch 486/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1699 - mae: 0.3505 - val_loss: 0.1845 - val_mae: 0.3679\n",
            "Epoch 487/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1695 - mae: 0.3506 - val_loss: 0.1848 - val_mae: 0.3698\n",
            "Epoch 488/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1701 - mae: 0.3517 - val_loss: 0.1851 - val_mae: 0.3709\n",
            "Epoch 489/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1698 - mae: 0.3509 - val_loss: 0.1845 - val_mae: 0.3678\n",
            "Epoch 490/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3680\n",
            "Epoch 491/500\n",
            "600/600 [==============================] - 0s 42us/sample - loss: 0.1696 - mae: 0.3502 - val_loss: 0.1846 - val_mae: 0.3683\n",
            "Epoch 492/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1699 - mae: 0.3512 - val_loss: 0.1853 - val_mae: 0.3714\n",
            "Epoch 493/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1698 - mae: 0.3513 - val_loss: 0.1848 - val_mae: 0.3697\n",
            "Epoch 494/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.1696 - mae: 0.3509 - val_loss: 0.1847 - val_mae: 0.3691\n",
            "Epoch 495/500\n",
            "600/600 [==============================] - 0s 41us/sample - loss: 0.1695 - mae: 0.3504 - val_loss: 0.1845 - val_mae: 0.3679\n",
            "Epoch 496/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1696 - mae: 0.3503 - val_loss: 0.1846 - val_mae: 0.3684\n",
            "Epoch 497/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1695 - mae: 0.3505 - val_loss: 0.1847 - val_mae: 0.3693\n",
            "Epoch 498/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1696 - mae: 0.3510 - val_loss: 0.1848 - val_mae: 0.3699\n",
            "Epoch 499/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1695 - mae: 0.3508 - val_loss: 0.1846 - val_mae: 0.3690\n",
            "Epoch 500/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1697 - mae: 0.3503 - val_loss: 0.1845 - val_mae: 0.3681\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cRE8KpEqVfaS",
        "colab_type": "text"
      },
      "source": [
        "### 3. Plot Metrics"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "SDsjqfjFm7Fz",
        "colab_type": "text"
      },
      "source": [
        "**1. Mean Squared Error**\n",
        "\n",
        "During training, the model's performance is constantly being measured against both our training data and the validation data that we set aside earlier. Training produces a log of data that tells us how the model's performance changed over the course of the training process.\n",
        "\n",
        "The following cells will display some of that data in a graphical form:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "CmvA-ksoln8r",
        "colab_type": "code",
        "outputId": "2796d3ca-deb7-4cf9-cc01-78df3cacf12a",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        }
      },
      "source": [
        "# Draw a graph of the loss, which is the distance between\n",
        "# the predicted and actual values during training and validation.\n",
        "loss = history_1.history['loss']\n",
        "val_loss = history_1.history['val_loss']\n",
        "\n",
        "epochs = range(1, len(loss) + 1)\n",
        "\n",
        "plt.plot(epochs, loss, 'g.', label='Training loss')\n",
        "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
        "plt.title('Training and validation loss')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Loss')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nEUlySgQiIklOiUBEJMlFOkYQnvjzcyAVuN/df1hv/s+Ak8LJ7sCh7t43yphEZP9VVFRQUlLCvn37\nWl5YEiorK4vs7GzS09NbvU5kiSC85O8cgptrlAArzGxheLVGANz9mrjlvw6MiSoeETlwJSUl9OrV\ni9zcXJq+r5Akmruzbds2SkpKGDJkSKvXi7JraDyw0d3fDC9INZ/gsgBNmUp4Qw8R6Vj27dtH//79\nlQQ6ODOjf//++91yizIRDKbuzTVKqHvzixpm9hFgCA2vshibf5mZFZlZ0ZYtWw4omOWbl3P7s7ez\nfPPylhcWkQaUBDqHA3mfOsp5BOcBj4S3KGzA3ecCcwHy8/P3+5oYyzcv5+TfnUx5VTkZqRksnraY\ngpyCllcUEUkCUbYI3qLuXZayafouSOcRYbfQ0uKllFeVU+VVlFeVs7R4aVS7EpEIbNu2jby8PPLy\n8hg0aBCDBw+umS4vL2923aKiIq6++uoW9zFx4sQ2iXXp0qWcccYZbbKt9hJli2AFMNTMhhAkgPOo\neyclAMI7Nx1CcFOKSBTmFpKRmlHTIijMLYxqVyISgf79+7NmzRoAZs+eTc+ePbnuuutq5ldWVpKW\n1vjXWX5+Pvn5+S3u44UXXmibYDuhyFoE7l4JXAUsAl4DHnb3dWZ2i5lNiVv0PGC+R3gZ1IKcAhZP\nW8ytJ92qbiGRdhL1uNz06dO54oormDBhAjNmzODFF1+koKCAMWPGMHHiRDZs2ADU/YU+e/ZsLrro\nIgoLCznqqKO4++67a7bXs2fPmuULCws599xzGT58OOeffz6xr6fHH3+c4cOHM3bsWK6++uoWf/l/\n8MEHnHXWWYwaNYrjjjuOtWvXAvDMM8/UtGjGjBnD7t27eeeddzjxxBPJy8vjE5/4BM8++2ybv2ZN\niXSMwN0fJ7hHanzZzfWmZ0cZQ0xBToESgEg7aa9xuZKSEl544QVSU1PZtWsXzz77LGlpaTz11FN8\n+9vf5i9/+UuDddavX8+SJUvYvXs3Rx99NFdeeWWDY+5Xr17NunXrOOKII5g0aRLPP/88+fn5XH75\n5SxbtowhQ4YwderUFuObNWsWY8aMYcGCBTz99NNMmzaNNWvWcOeddzJnzhwmTZrEnj17yMrKYu7c\nuXz2s5/lO9/5DlVVVZSWlrbZ69SSjjJYLCJdSGPjclEkgi984QukpqYCsHPnTi688EJef/11zIyK\niopG1zn99NPJzMwkMzOTQw89lPfee4/s7Ow6y4wfP76mLC8vj+LiYnr27MlRRx1Vc3z+1KlTmTt3\nbrPxPffcczXJ6FOf+hTbtm1j165dTJo0iWuvvZbzzz+fc845h+zsbMaNG8dFF11ERUUFZ511Fnl5\neQf12uwPXWJCRNpcbFwu1VIjHZfr0aNHzfObbrqJk046iVdeeYVHH320yWPpMzMza56npqZSWVl5\nQMscjJkzZ3L//fezd+9eJk2axPr16znxxBNZtmwZgwcPZvr06fzud79r0302Ry0CEWlzsXG5pcVL\nKcwtbJdu2Z07dzJ4cHCq0oMPPtjm2z/66KN58803KS4uJjc3l4ceeqjFdU444QTmzZvHTTfdxNKl\nSxkwYAC9e/fmjTfeYOTIkYwcOZIVK1awfv16unXrRnZ2NpdeeillZWWsWrWKadOmtXk9GqNEICKR\naO9xuRkzZnDhhRfy/e9/n9NPP73Nt9+tWzfuueceJk+eTI8ePRg3blyL68QGp0eNGkX37t357W9/\nC8Bdd93FkiVLSElJ4ZhjjuHUU09l/vz5/PjHPyY9PZ2ePXu2a4ug092zOD8/33VjGpH29dprr/Hx\nj3880WEk3J49e+jZsyfuzte+9jWGDh3KNddc0/KK7ayx98vMVrp7o8fRaoxARKSVfvWrX5GXl8cx\nxxzDzp07ufzyyxMdUptQ15CISCtdc801HbIFcLDUIhARSXJKBCIiSU6JQEQkySkRiIgkOSUCEenw\nTjrpJBYtWlSn7K677uLKK69scp3CwkJih5qfdtpp7Nixo8Eys2fP5s4772x23wsWLODVV2vusMvN\nN9/MU089tT/hN6ojXa5aiUBEOrypU6cyf/78OmXz589v1YXfILhqaN++fQ9o3/UTwS233MIpp5xy\nQNvqqJQIRKTDO/fcc3nsscdqbkJTXFzM22+/zQknnMCVV15Jfn4+xxxzDLNmzWp0/dzcXLZu3QrA\nbbfdxrBhwzj++ONrLlUNwTkC48aNY/To0Xz+85+ntLSUF154gYULF3L99deTl5fHG2+8wfTp03nk\nkUcAWLx4MWPGjGHkyJFcdNFFlJWV1exv1qxZHHvssYwcOZL169c3W79EX65a5xGIyH755jchvEdM\nm8nLg7vuanp+v379GD9+PE888QRnnnkm8+fP54tf/CJmxm233Ua/fv2oqqri5JNPZu3atYwaNarR\n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\nAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "iOFBSbPcYCN4",
        "colab_type": "text"
      },
      "source": [
        "The graph shows the _loss_ (or the difference between the model's predictions and the actual data) for each epoch. There are several ways to calculate loss, and the method we have used is _mean squared error_. There is a distinct loss value given for the training and the validation data.\n",
        "\n",
        "As we can see, the amount of loss rapidly decreases over the first 25 epochs, before flattening out. This means that the model is improving and producing more accurate predictions!\n",
        "\n",
        "Our goal is to stop training when either the model is no longer improving, or when the _training loss_ is less than the _validation loss_, which would mean that the model has learned to predict the training data so well that it can no longer generalize to new data.\n",
        "\n",
        "To make the flatter part of the graph more readable, let's skip the first 50 epochs:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Zo0RYroFZYIV",
        "colab_type": "code",
        "outputId": "5844429f-cb52-41e0-c41c-52485efcd0ac",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        }
      },
      "source": [
        "# Exclude the first few epochs so the graph is easier to read\n",
        "SKIP = 50\n",
        "\n",
        "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n",
        "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n",
        "plt.title('Training and validation loss')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Loss')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 11,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0\ndHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3de3xV1bnv/8+TQIgKSAkoSNBgxQs2\nkkhAF1SNxbMr6sELtpXaBjYqir1s2m3Vs31ZPfZ2RPcu21+xGmspdOtGK7vUa22NRFBjyy2AIFS0\nQVBUjCJQhJDk+f0x5wori5V7Vm7r+3698sqa1zXmXEmejPGMMaa5OyIiIvHSOrsAIiLSNSlAiIhI\nQgoQIiKSkAKEiIgkpAAhIiIJKUCIiEhCChDSIczsOTOb1t77diYzqzCzC5JwXjezk8LXD5jZ7c3Z\ntxXvc7WZ/am15WzkvIVmtr29zysdr1dnF0C6LjPbG7N4JHAAqAmXr3f3R5p7LneflIx9ezp3v6E9\nzmNmOcDfgd7uXh2e+xGg2Z+hpB4FCGmQu/eNvjazCuBad38hfj8z6xX9oyMiPYeamKTFok0IZnaL\nmb0PzDezz5nZ02a208w+CV9nxxxTambXhq+nm9nLZnZvuO/fzWxSK/cdYWbLzGyPmb1gZvPM7L8a\nKHdzyvgjM3slPN+fzGxQzPZvmtlWM6s0s9sauT9nmdn7ZpYes+5yM1sXvh5nZmVmtsvMdpjZL8ws\no4Fz/cbMfhyz/IPwmPfMbEbcvheb2Roz221m28zszpjNy8Lvu8xsr5lFovc25vjxZrbCzD4Nv49v\n7r1pjJmdFh6/y8w2mNnkmG0XmdnG8JzvmtlN4fpB4eezy8w+NrPlZqa/Vx1MN1xaawgwEDgBmEnw\nszQ/XD4e+Az4RSPHnwVsBgYBc4CHzcxase+jwF+BLOBO4JuNvGdzyvh14J+BY4AMIPoHaxTwy/D8\nx4Xvl00C7v4X4B/Al+LO+2j4ugb4Xng9EWAicGMj5SYsw4Vhef4XMBKIz3/8AygCBgAXA7PM7LJw\n27nh9wHu3tfdy+LOPRB4BrgvvLb/AJ4xs6y4azjs3jRR5t7AU8CfwuO+AzxiZqeEuzxM0FzZD/gC\n8GK4/l+B7cBg4Fjg3wDNC9TBFCCktWqBO9z9gLt/5u6V7r7Y3fe5+x7gJ8B5jRy/1d0fcvcaYAEw\nlOAPQbP3NbPjgbHAD929yt1fBp5s6A2bWcb57v43d/8MeBzIC9dfCTzt7svc/QBwe3gPGvLfwFQA\nM+sHXBSuw91Xuftr7l7t7hXAgwnKkchXw/K97u7/IAiIsddX6u7r3b3W3deF79ec80IQUN5099+G\n5fpvYBPwv2P2aejeNOZsoC/w/8LP6EXgacJ7AxwERplZf3f/xN1Xx6wfCpzg7gfdfblr4rgOpwAh\nrbXT3fdHF8zsSDN7MGyC2U3QpDEgtpklzvvRF+6+L3zZt4X7Hgd8HLMOYFtDBW5mGd+Peb0vpkzH\nxZ47/ANd2dB7EdQWrjCzPsAVwGp33xqW4+Sw+eT9sBw/JahNNKVeGYCtcdd3lpktDZvQPgVuaOZ5\no+feGrduKzAsZrmhe9Nkmd09NpjGnncKQfDcamYvmVkkXH8PsAX4k5m9bWa3Nu8ypD0pQEhrxf83\n96/AKcBZ7t6fQ00aDTUbtYcdwEAzOzJm3fBG9m9LGXfEnjt8z6yGdnb3jQR/CCdRv3kJgqaqTcDI\nsBz/1poyEDSTxXqUoAY13N2PBh6IOW9T/32/R9D0Fut44N1mlKup8w6Pyx/UndfdV7j7pQTNT0sI\naia4+x53/1d3PxGYDHzfzCa2sSzSQgoQ0l76EbTp7wrbs+9I9huG/5GvBO40s4zwv8//3cghbSnj\nE8AlZvbFMKF8F03//jwK/AtBIPpdXDl2A3vN7FRgVjPL8Dgw3cxGhQEqvvz9CGpU+81sHEFgitpJ\n0CR2YgPnfhY42cy+bma9zOxrwCiC5qC2+AtBbeNmM+ttZoUEn9Gi8DO72syOdveDBPekFsDMLjGz\nk8Jc06cEeZvGmvQkCRQgpL3MBY4APgJeA/7YQe97NUGitxL4MfAYwXiNRFpdRnffAHyL4I/+DuAT\ngiRqY6I5gBfd/aOY9TcR/PHeAzwUlrk5ZXguvIYXCZpfXozb5UbgLjPbA/yQ8L/x8Nh9BDmXV8Ke\nQWfHnbsSuISgllUJ3AxcElfuFnP3KoKAMIngvt8PFLn7pnCXbwIVYVPbDQSfJwRJ+BeAvUAZcL+7\nL21LWaTlTHkf6UnM7DFgk7snvQYj0tOpBiHdmpmNNbPPm1la2A30UoK2bBFpI42klu5uCPA/BAnj\n7cAsd1/TuUUS6RnUxCQiIgmpiUlERBLqMU1MgwYN8pycnM4uhohIt7Jq1aqP3H1wom09JkDk5OSw\ncuXKzi6GiEi3YmbxI+jrqIlJREQSUoAQEZGEFCBERCShHpODEJGOd/DgQbZv387+/fub3lk6VWZm\nJtnZ2fTu3bvZxyhAiEirbd++nX79+pGTk0PDz3uSzubuVFZWsn37dkaMGNHs49TEJCKttn//frKy\nshQcujgzIysrq8U1PQUIoKwMfvaz4LuItIyCQ/fQms8p5ZuYyspg4kSoqoKMDCgpgUik6eNERHq6\nlK9BlJYGwaGmJvheWtrZJRKR5qqsrCQvL4+8vDyGDBnCsGHD6parqqoaPXblypV897vfbfI9xo8f\n3y5lLS0t5ZJLLmmXc3WUlK9BFBYGNYdoDaKwsLNLJCLNlZWVRXl5OQB33nknffv25aabbqrbXl1d\nTa9eif/MFRQUUFBQ0OR7vPrqq+1T2G4o5WsQkUjQrPSjH6l5SaQjlG0r42fLf0bZtuQk/aZPn84N\nN9zAWWedxc0338xf//pXIpEI+fn5jB8/ns2bNwP1/6O/8847mTFjBoWFhZx44oncd999defr27dv\n3f6FhYVceeWVnHrqqVx99dVEZ8N+9tlnOfXUUxkzZgzf/e53m6wpfPzxx1x22WWcccYZnH322axb\ntw6Al156qa4GlJ+fz549e9ixYwfnnnsueXl5fOELX2D58uXtfs8akvI1CBHpOGXbypi4cCJVNVVk\npGdQUlRCZHj7/1e2fft2Xn31VdLT09m9ezfLly+nV69evPDCC/zbv/0bixcvPuyYTZs2sXTpUvbs\n2cMpp5zCrFmzDhszsGbNGjZs2MBxxx3HhAkTeOWVVygoKOD6669n2bJljBgxgqlTpzZZvjvuuIP8\n/HyWLFnCiy++SFFREeXl5dx7773MmzePCRMmsHfvXjIzMykuLubLX/4yt912GzU1Nezbt6/d7lNT\nUj5AKEkt0nFKK0qpqqmixmuoqqmitKI0KQHiK1/5Cunp6QB8+umnTJs2jTfffBMz4+DBgwmPufji\ni+nTpw99+vThmGOO4YMPPiA7O7vePuPGjatbl5eXR0VFBX379uXEE0+sG18wdepUiouLGy3fyy+/\nXBekvvSlL1FZWcnu3buZMGEC3//+97n66qu54ooryM7OZuzYscyYMYODBw9y2WWXkZeX16Z70xIp\n38SkJLVIxynMKSQjPYN0SycjPYPCnMKkvM9RRx1V9/r222/n/PPP5/XXX+epp55qcCxAnz596l6n\n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\ngg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "W4EQD-Bb8hLM",
        "colab_type": "text"
      },
      "source": [
        "From the plot, we can see that loss continues to reduce until around 200 epochs, at which point it is mostly stable. This means that there's no need to train our network beyond 200 epochs.\n",
        "\n",
        "However, we can also see that the lowest loss value is still around 0.155. This means that our network's predictions are off by an average of ~15%. In addition, the validation loss values jump around a lot, and is sometimes even higher.\n",
        "\n",
        "**2. Mean Absolute Error**\n",
        "\n",
        "To gain more insight into our model's performance we can plot some more data. This time, we'll plot the _mean absolute error_, which is another way of measuring how far the network's predictions are from the actual numbers:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Md9E_azmpkZU",
        "colab_type": "code",
        "outputId": "90fff6f3-8dc1-42ec-a0e2-f2434c790a3d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        }
      },
      "source": [
        "plt.clf()\n",
        "\n",
        "# Draw a graph of mean absolute error, which is another way of\n",
        "# measuring the amount of error in the prediction.\n",
        "mae = history_1.history['mae']\n",
        "val_mae = history_1.history['val_mae']\n",
        "\n",
        "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n",
        "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n",
        "plt.title('Training and validation mean absolute error')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('MAE')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n8nJGjBjB0KFDufDCC+M9oYuKirj++usZOXIkQ4cO5Y033giVq70NC24KIkDYkBuGYew8/mgFv/yl\n+7+zz7XevXszZswYnnjiCcBZD9/97ncREW666SaWLl3KqlWreO6551i1alXK4yxbtoz58+ezcuVK\nFi1axMsvvxzfduaZZ/Lyyy/zyiuv8PWvf5377ruPI444gtNOO43f/va3rFy5kv322y9ef9u2bVxw\nwQU88MADrF69mtraWu6+++749r59+7J8+XImTZrUpBvLHxZ8yZIlKYcF/853vsO5557LvHnzEvYd\nP3583MV09dVXJx+62ZiCCGBuJsPIDbmI8QXdTEH30oMPPsjIkSMZMWIEa9asSXAHJbN48WLOOOMM\ndtllF3bbbTdOO61hJoJXX32Vo48+mqFDhzJ37tyUw4X7rF27lkGDBnHAAQcAcP755/P888/Ht595\n5pkAjBo1iqqqqpTHaU/DgpuCCGBuJsPIDbnoZ3T66adTXl7O8uXL+eKLLxg1ahTvvPMOt99+O+Xl\n5axatYpTTjkl5TDf6bjgggv4wx/+wOrVq7n++utbfBwf3xJIN1x4exoW3BREEuZmMozs4493duON\n2RvGpkePHhx33HFceOGF8Tftzz77jF133ZXdd9+dDz/8MO6CSsUxxxzDggUL+PLLL9m6dSuPPvpo\nfNvWrVvZc8892bFjB3Pnzo2X9+zZk61btzY61oEHHkhVVRXr1q0D4H//93859thjW3RuN9xwA7fe\nemvosODvvvsuVVVVVFVVMX369EZupmxi/SCSKC5usCCiUetRbRjZIhbLft+ic889lzPOOCPuaho2\nbBgjRozgoIMOYuDAgRx55JFN7j9y5Ei+973vMWzYMPbYY4+EIbtvvPFGDjvsMPr168dhhx0WVwrn\nnHMOP/zhD7nzzjsTMoW6devGrFmzOPvss6mtreXQQw9l4sSJLTqv9jIsuA33nURlJRx3XMPQ388+\nax3mDCMZG+67Y9Lc4b7NxZRERQXU1oKq+28uJsMwuiqmIJKwTCbDMAyHKYgkLJPJMDKjs7inuwot\nuV6mIEKwTCbDaJpu3bpRXV1tSqKDoKpUV1fTrVu3Zu1nWUwh+G6m7dvNzWQYYQwYMIANGzawadOm\nthbFyJBu3boxYMCAZu1jCiIE3800ebLr+Tllig3/bRhB8vPzGTRoUFuLYeQYczGlwNxMhmF0dUxB\n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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ctawd0CXAVEw",
        "colab_type": "text"
      },
      "source": [
        "This graph of _mean absolute error_ tells another story. We can see that training data shows consistently lower error than validation data, which means that the network may have _overfit_, or learned the training data so rigidly that it can't make effective predictions about new data.\n",
        "\n",
        "In addition, the mean absolute error values are quite high, ~0.305 at best, which means some of the model's predictions are at least 30% off. A 30% error means we are very far from accurately modelling the sine wave function.\n",
        "\n",
        "**3. Actual vs Predicted Outputs**\n",
        "\n",
        "To get more insight into what is happening, let's check its predictions against the test dataset we set aside earlier:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "i13eVIT3B9Mj",
        "colab_type": "code",
        "outputId": "372e169f-f97d-47ee-e64c-162b8ba4e38c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 318
        }
      },
      "source": [
        "# Calculate and print the loss on our test dataset\n",
        "loss = model_1.evaluate(x_test, y_test)\n",
        "\n",
        "# Make predictions based on our test dataset\n",
        "predictions = model_1.predict(x_test)\n",
        "\n",
        "# Graph the predictions against the actual values\n",
        "plt.clf()\n",
        "plt.title('Comparison of predictions and actual values')\n",
        "plt.plot(x_test, y_test, 'b.', label='Actual')\n",
        "plt.plot(x_test, predictions, 'r.', label='Predicted')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 13,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\r200/1 [================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 0s 57us/sample - loss: 0.1560 - mae: 0.3435\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Wokallj1D21L",
        "colab_type": "text"
      },
      "source": [
        "Oh dear! The graph makes it clear that our network has learned to approximate the sine function in a very limited way.\n",
        "\n",
        "The rigidity of this fit suggests that the model does not have enough capacity to learn the full complexity of the sine wave function, so it's only able to approximate it in an overly simplistic way. By making our model bigger, we should be able to improve its performance."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "T7sL-hWtoAZC",
        "colab_type": "text"
      },
      "source": [
        "## Training a Larger Model"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aQd0JSdOoAbw",
        "colab_type": "text"
      },
      "source": [
        "### 1. Design the Model\n",
        "To make our model bigger, let's add an additional layer of neurons. The following cell redefines our model in the same way as earlier, but with 16 neurons in the first layer and an additional layer of 16 neurons in the middle:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oW0xus6AF-4o",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "model_2 = tf.keras.Sequential()\n",
        "\n",
        "# First layer takes a scalar input and feeds it through 16 \"neurons\". The\n",
        "# neurons decide whether to activate based on the 'relu' activation function.\n",
        "model_2.add(keras.layers.Dense(16, activation='relu', input_shape=(1,)))\n",
        "\n",
        "# The new second layer may help the network learn more complex representations\n",
        "model_2.add(keras.layers.Dense(16, activation='relu'))\n",
        "\n",
        "# Final layer is a single neuron, since we want to output a single value\n",
        "model_2.add(keras.layers.Dense(1))\n",
        "\n",
        "# Compile the model using a standard optimizer and loss function for regression\n",
        "model_2.compile(optimizer='adam', loss='mse', metrics=['mae'])"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Dv2SC409Grap",
        "colab_type": "text"
      },
      "source": [
        "### 2. Train the Model ###\n",
        "\n",
        "We'll now train the new model."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "DPAUrdkmGq1M",
        "colab_type": "code",
        "outputId": "64730ff7-488e-4b74-d5a1-49a1b733e9e5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "history_2 = model_2.fit(x_train, y_train, epochs=500, batch_size=64,\n",
        "                    validation_data=(x_validate, y_validate))"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Train on 600 samples, validate on 200 samples\n",
            "Epoch 1/500\n",
            "600/600 [==============================] - 0s 736us/sample - loss: 0.4245 - mae: 0.5529 - val_loss: 0.4310 - val_mae: 0.5678\n",
            "Epoch 2/500\n",
            "600/600 [==============================] - 0s 64us/sample - loss: 0.4056 - mae: 0.5462 - val_loss: 0.4138 - val_mae: 0.5548\n",
            "Epoch 3/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.3897 - mae: 0.5302 - val_loss: 0.3974 - val_mae: 0.5437\n",
            "Epoch 4/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.3743 - mae: 0.5181 - val_loss: 0.3815 - val_mae: 0.5336\n",
            "Epoch 5/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.3602 - mae: 0.5128 - val_loss: 0.3677 - val_mae: 0.5276\n",
            "Epoch 6/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.3436 - mae: 0.5010 - val_loss: 0.3504 - val_mae: 0.5140\n",
            "Epoch 7/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.3281 - mae: 0.4859 - val_loss: 0.3340 - val_mae: 0.5021\n",
            "Epoch 8/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.3127 - mae: 0.4748 - val_loss: 0.3177 - val_mae: 0.4921\n",
            "Epoch 9/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.2961 - mae: 0.4626 - val_loss: 0.3012 - val_mae: 0.4794\n",
            "Epoch 10/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2797 - mae: 0.4502 - val_loss: 0.2851 - val_mae: 0.4687\n",
            "Epoch 11/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2635 - mae: 0.4391 - val_loss: 0.2699 - val_mae: 0.4589\n",
            "Epoch 12/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.2467 - mae: 0.4251 - val_loss: 0.2523 - val_mae: 0.4414\n",
            "Epoch 13/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.2312 - mae: 0.4107 - val_loss: 0.2369 - val_mae: 0.4293\n",
            "Epoch 14/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.2149 - mae: 0.3971 - val_loss: 0.2225 - val_mae: 0.4168\n",
            "Epoch 15/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.2031 - mae: 0.3861 - val_loss: 0.2085 - val_mae: 0.4023\n",
            "Epoch 16/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1908 - mae: 0.3716 - val_loss: 0.1970 - val_mae: 0.3899\n",
            "Epoch 17/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1777 - mae: 0.3590 - val_loss: 0.1881 - val_mae: 0.3810\n",
            "Epoch 18/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1682 - mae: 0.3475 - val_loss: 0.1789 - val_mae: 0.3677\n",
            "Epoch 19/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.1603 - mae: 0.3367 - val_loss: 0.1723 - val_mae: 0.3586\n",
            "Epoch 20/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1536 - mae: 0.3276 - val_loss: 0.1668 - val_mae: 0.3500\n",
            "Epoch 21/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1487 - mae: 0.3181 - val_loss: 0.1619 - val_mae: 0.3403\n",
            "Epoch 22/500\n",
            "600/600 [==============================] - 0s 74us/sample - loss: 0.1433 - mae: 0.3108 - val_loss: 0.1598 - val_mae: 0.3358\n",
            "Epoch 23/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.1418 - mae: 0.3072 - val_loss: 0.1558 - val_mae: 0.3248\n",
            "Epoch 24/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.1389 - mae: 0.2992 - val_loss: 0.1538 - val_mae: 0.3189\n",
            "Epoch 25/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1387 - mae: 0.2978 - val_loss: 0.1524 - val_mae: 0.3161\n",
            "Epoch 26/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1346 - mae: 0.2904 - val_loss: 0.1510 - val_mae: 0.3112\n",
            "Epoch 27/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1340 - mae: 0.2904 - val_loss: 0.1501 - val_mae: 0.3098\n",
            "Epoch 28/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1313 - mae: 0.2849 - val_loss: 0.1489 - val_mae: 0.3042\n",
            "Epoch 29/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1303 - mae: 0.2830 - val_loss: 0.1489 - val_mae: 0.3058\n",
            "Epoch 30/500\n",
            "600/600 [==============================] - 0s 63us/sample - loss: 0.1292 - mae: 0.2804 - val_loss: 0.1474 - val_mae: 0.2997\n",
            "Epoch 31/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1286 - mae: 0.2781 - val_loss: 0.1467 - val_mae: 0.2998\n",
            "Epoch 32/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.1274 - mae: 0.2774 - val_loss: 0.1463 - val_mae: 0.2990\n",
            "Epoch 33/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.1268 - mae: 0.2758 - val_loss: 0.1451 - val_mae: 0.2945\n",
            "Epoch 34/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1295 - mae: 0.2746 - val_loss: 0.1449 - val_mae: 0.2966\n",
            "Epoch 35/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1278 - mae: 0.2760 - val_loss: 0.1438 - val_mae: 0.2937\n",
            "Epoch 36/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1246 - mae: 0.2710 - val_loss: 0.1431 - val_mae: 0.2908\n",
            "Epoch 37/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1247 - mae: 0.2693 - val_loss: 0.1434 - val_mae: 0.2939\n",
            "Epoch 38/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1237 - mae: 0.2702 - val_loss: 0.1415 - val_mae: 0.2893\n",
            "Epoch 39/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1263 - mae: 0.2691 - val_loss: 0.1411 - val_mae: 0.2891\n",
            "Epoch 40/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1238 - mae: 0.2693 - val_loss: 0.1408 - val_mae: 0.2906\n",
            "Epoch 41/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.1209 - mae: 0.2659 - val_loss: 0.1393 - val_mae: 0.2859\n",
            "Epoch 42/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.1216 - mae: 0.2644 - val_loss: 0.1387 - val_mae: 0.2842\n",
            "Epoch 43/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1200 - mae: 0.2642 - val_loss: 0.1386 - val_mae: 0.2869\n",
            "Epoch 44/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1193 - mae: 0.2626 - val_loss: 0.1370 - val_mae: 0.2814\n",
            "Epoch 45/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.1187 - mae: 0.2625 - val_loss: 0.1362 - val_mae: 0.2829\n",
            "Epoch 46/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1177 - mae: 0.2593 - val_loss: 0.1353 - val_mae: 0.2796\n",
            "Epoch 47/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.1172 - mae: 0.2598 - val_loss: 0.1346 - val_mae: 0.2789\n",
            "Epoch 48/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.1158 - mae: 0.2569 - val_loss: 0.1337 - val_mae: 0.2769\n",
            "Epoch 49/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1176 - mae: 0.2590 - val_loss: 0.1329 - val_mae: 0.2761\n",
            "Epoch 50/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1141 - mae: 0.2544 - val_loss: 0.1320 - val_mae: 0.2759\n",
            "Epoch 51/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1138 - mae: 0.2536 - val_loss: 0.1312 - val_mae: 0.2741\n",
            "Epoch 52/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1127 - mae: 0.2535 - val_loss: 0.1313 - val_mae: 0.2776\n",
            "Epoch 53/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.1124 - mae: 0.2518 - val_loss: 0.1294 - val_mae: 0.2708\n",
            "Epoch 54/500\n",
            "600/600 [==============================] - 0s 61us/sample - loss: 0.1115 - mae: 0.2508 - val_loss: 0.1287 - val_mae: 0.2722\n",
            "Epoch 55/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.1103 - mae: 0.2487 - val_loss: 0.1278 - val_mae: 0.2709\n",
            "Epoch 56/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1094 - mae: 0.2485 - val_loss: 0.1267 - val_mae: 0.2687\n",
            "Epoch 57/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1090 - mae: 0.2479 - val_loss: 0.1259 - val_mae: 0.2684\n",
            "Epoch 58/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1118 - mae: 0.2456 - val_loss: 0.1256 - val_mae: 0.2695\n",
            "Epoch 59/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1106 - mae: 0.2500 - val_loss: 0.1243 - val_mae: 0.2670\n",
            "Epoch 60/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.1071 - mae: 0.2429 - val_loss: 0.1231 - val_mae: 0.2626\n",
            "Epoch 61/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.1059 - mae: 0.2436 - val_loss: 0.1226 - val_mae: 0.2653\n",
            "Epoch 62/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.1048 - mae: 0.2419 - val_loss: 0.1213 - val_mae: 0.2607\n",
            "Epoch 63/500\n",
            "600/600 [==============================] - 0s 65us/sample - loss: 0.1038 - mae: 0.2394 - val_loss: 0.1204 - val_mae: 0.2604\n",
            "Epoch 64/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.1029 - mae: 0.2383 - val_loss: 0.1196 - val_mae: 0.2593\n",
            "Epoch 65/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.1021 - mae: 0.2376 - val_loss: 0.1186 - val_mae: 0.2576\n",
            "Epoch 66/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.1012 - mae: 0.2353 - val_loss: 0.1179 - val_mae: 0.2585\n",
            "Epoch 67/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.1006 - mae: 0.2358 - val_loss: 0.1169 - val_mae: 0.2568\n",
            "Epoch 68/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0996 - mae: 0.2346 - val_loss: 0.1158 - val_mae: 0.2553\n",
            "Epoch 69/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0996 - mae: 0.2349 - val_loss: 0.1148 - val_mae: 0.2534\n",
            "Epoch 70/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.0985 - mae: 0.2316 - val_loss: 0.1142 - val_mae: 0.2490\n",
            "Epoch 71/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0986 - mae: 0.2327 - val_loss: 0.1144 - val_mae: 0.2559\n",
            "Epoch 72/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0981 - mae: 0.2306 - val_loss: 0.1121 - val_mae: 0.2494\n",
            "Epoch 73/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0966 - mae: 0.2308 - val_loss: 0.1118 - val_mae: 0.2521\n",
            "Epoch 74/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0972 - mae: 0.2281 - val_loss: 0.1104 - val_mae: 0.2456\n",
            "Epoch 75/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0960 - mae: 0.2293 - val_loss: 0.1101 - val_mae: 0.2500\n",
            "Epoch 76/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0933 - mae: 0.2247 - val_loss: 0.1087 - val_mae: 0.2424\n",
            "Epoch 77/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0922 - mae: 0.2221 - val_loss: 0.1080 - val_mae: 0.2453\n",
            "Epoch 78/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0917 - mae: 0.2235 - val_loss: 0.1069 - val_mae: 0.2432\n",
            "Epoch 79/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0922 - mae: 0.2204 - val_loss: 0.1061 - val_mae: 0.2394\n",
            "Epoch 80/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0918 - mae: 0.2239 - val_loss: 0.1062 - val_mae: 0.2456\n",
            "Epoch 81/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0908 - mae: 0.2220 - val_loss: 0.1048 - val_mae: 0.2372\n",
            "Epoch 82/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0889 - mae: 0.2193 - val_loss: 0.1046 - val_mae: 0.2421\n",
            "Epoch 83/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.0883 - mae: 0.2175 - val_loss: 0.1029 - val_mae: 0.2339\n",
            "Epoch 84/500\n",
            "600/600 [==============================] - 0s 64us/sample - loss: 0.0872 - mae: 0.2143 - val_loss: 0.1022 - val_mae: 0.2372\n",
            "Epoch 85/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0865 - mae: 0.2148 - val_loss: 0.1012 - val_mae: 0.2342\n",
            "Epoch 86/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0856 - mae: 0.2124 - val_loss: 0.1004 - val_mae: 0.2317\n",
            "Epoch 87/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0850 - mae: 0.2122 - val_loss: 0.0998 - val_mae: 0.2340\n",
            "Epoch 88/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0843 - mae: 0.2121 - val_loss: 0.0987 - val_mae: 0.2312\n",
            "Epoch 89/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0836 - mae: 0.2103 - val_loss: 0.0981 - val_mae: 0.2313\n",
            "Epoch 90/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0832 - mae: 0.2113 - val_loss: 0.0971 - val_mae: 0.2288\n",
            "Epoch 91/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0830 - mae: 0.2066 - val_loss: 0.0970 - val_mae: 0.2238\n",
            "Epoch 92/500\n",
            "600/600 [==============================] - 0s 70us/sample - loss: 0.0829 - mae: 0.2111 - val_loss: 0.0965 - val_mae: 0.2311\n",
            "Epoch 93/500\n",
            "600/600 [==============================] - 0s 69us/sample - loss: 0.0813 - mae: 0.2068 - val_loss: 0.0959 - val_mae: 0.2234\n",
            "Epoch 94/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0816 - mae: 0.2070 - val_loss: 0.0950 - val_mae: 0.2288\n",
            "Epoch 95/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0817 - mae: 0.2036 - val_loss: 0.0940 - val_mae: 0.2189\n",
            "Epoch 96/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0803 - mae: 0.2064 - val_loss: 0.0929 - val_mae: 0.2243\n",
            "Epoch 97/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0795 - mae: 0.2018 - val_loss: 0.0919 - val_mae: 0.2201\n",
            "Epoch 98/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0773 - mae: 0.2024 - val_loss: 0.0930 - val_mae: 0.2276\n",
            "Epoch 99/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0780 - mae: 0.2015 - val_loss: 0.0905 - val_mae: 0.2205\n",
            "Epoch 100/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0770 - mae: 0.2025 - val_loss: 0.0900 - val_mae: 0.2220\n",
            "Epoch 101/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0768 - mae: 0.1993 - val_loss: 0.0892 - val_mae: 0.2146\n",
            "Epoch 102/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0783 - mae: 0.2039 - val_loss: 0.0885 - val_mae: 0.2191\n",
            "Epoch 103/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0748 - mae: 0.1963 - val_loss: 0.0876 - val_mae: 0.2149\n",
            "Epoch 104/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0743 - mae: 0.1978 - val_loss: 0.0873 - val_mae: 0.2179\n",
            "Epoch 105/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0733 - mae: 0.1952 - val_loss: 0.0865 - val_mae: 0.2114\n",
            "Epoch 106/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0733 - mae: 0.1943 - val_loss: 0.0862 - val_mae: 0.2131\n",
            "Epoch 107/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0723 - mae: 0.1936 - val_loss: 0.0848 - val_mae: 0.2112\n",
            "Epoch 108/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0715 - mae: 0.1927 - val_loss: 0.0843 - val_mae: 0.2125\n",
            "Epoch 109/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.0714 - mae: 0.1903 - val_loss: 0.0836 - val_mae: 0.2100\n",
            "Epoch 110/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0719 - mae: 0.1952 - val_loss: 0.0830 - val_mae: 0.2111\n",
            "Epoch 111/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0714 - mae: 0.1895 - val_loss: 0.0824 - val_mae: 0.2072\n",
            "Epoch 112/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0699 - mae: 0.1929 - val_loss: 0.0823 - val_mae: 0.2110\n",
            "Epoch 113/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0699 - mae: 0.1891 - val_loss: 0.0810 - val_mae: 0.2053\n",
            "Epoch 114/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0691 - mae: 0.1898 - val_loss: 0.0805 - val_mae: 0.2074\n",
            "Epoch 115/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0678 - mae: 0.1859 - val_loss: 0.0798 - val_mae: 0.2025\n",
            "Epoch 116/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0674 - mae: 0.1880 - val_loss: 0.0794 - val_mae: 0.2061\n",
            "Epoch 117/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0672 - mae: 0.1844 - val_loss: 0.0785 - val_mae: 0.2008\n",
            "Epoch 118/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0663 - mae: 0.1848 - val_loss: 0.0780 - val_mae: 0.2038\n",
            "Epoch 119/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.0657 - mae: 0.1830 - val_loss: 0.0772 - val_mae: 0.2003\n",
            "Epoch 120/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0649 - mae: 0.1813 - val_loss: 0.0767 - val_mae: 0.2002\n",
            "Epoch 121/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0654 - mae: 0.1845 - val_loss: 0.0761 - val_mae: 0.1997\n",
            "Epoch 122/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0642 - mae: 0.1815 - val_loss: 0.0755 - val_mae: 0.1991\n",
            "Epoch 123/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0635 - mae: 0.1807 - val_loss: 0.0750 - val_mae: 0.1955\n",
            "Epoch 124/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0635 - mae: 0.1779 - val_loss: 0.0744 - val_mae: 0.1981\n",
            "Epoch 125/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.0642 - mae: 0.1844 - val_loss: 0.0738 - val_mae: 0.1968\n",
            "Epoch 126/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0659 - mae: 0.1780 - val_loss: 0.0739 - val_mae: 0.1973\n",
            "Epoch 127/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0622 - mae: 0.1817 - val_loss: 0.0731 - val_mae: 0.1985\n",
            "Epoch 128/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0619 - mae: 0.1772 - val_loss: 0.0722 - val_mae: 0.1936\n",
            "Epoch 129/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0607 - mae: 0.1764 - val_loss: 0.0718 - val_mae: 0.1946\n",
            "Epoch 130/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0602 - mae: 0.1747 - val_loss: 0.0710 - val_mae: 0.1925\n",
            "Epoch 131/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0600 - mae: 0.1748 - val_loss: 0.0706 - val_mae: 0.1923\n",
            "Epoch 132/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0592 - mae: 0.1743 - val_loss: 0.0699 - val_mae: 0.1913\n",
            "Epoch 133/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0594 - mae: 0.1722 - val_loss: 0.0695 - val_mae: 0.1901\n",
            "Epoch 134/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0589 - mae: 0.1753 - val_loss: 0.0690 - val_mae: 0.1903\n",
            "Epoch 135/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0587 - mae: 0.1702 - val_loss: 0.0684 - val_mae: 0.1886\n",
            "Epoch 136/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0575 - mae: 0.1725 - val_loss: 0.0682 - val_mae: 0.1908\n",
            "Epoch 137/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0570 - mae: 0.1704 - val_loss: 0.0676 - val_mae: 0.1871\n",
            "Epoch 138/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0567 - mae: 0.1692 - val_loss: 0.0671 - val_mae: 0.1879\n",
            "Epoch 139/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0562 - mae: 0.1692 - val_loss: 0.0663 - val_mae: 0.1848\n",
            "Epoch 140/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0558 - mae: 0.1676 - val_loss: 0.0658 - val_mae: 0.1847\n",
            "Epoch 141/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0553 - mae: 0.1663 - val_loss: 0.0653 - val_mae: 0.1840\n",
            "Epoch 142/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0552 - mae: 0.1665 - val_loss: 0.0650 - val_mae: 0.1850\n",
            "Epoch 143/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0550 - mae: 0.1688 - val_loss: 0.0642 - val_mae: 0.1831\n",
            "Epoch 144/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0542 - mae: 0.1647 - val_loss: 0.0640 - val_mae: 0.1820\n",
            "Epoch 145/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0536 - mae: 0.1644 - val_loss: 0.0633 - val_mae: 0.1812\n",
            "Epoch 146/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0533 - mae: 0.1646 - val_loss: 0.0628 - val_mae: 0.1820\n",
            "Epoch 147/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0527 - mae: 0.1630 - val_loss: 0.0623 - val_mae: 0.1803\n",
            "Epoch 148/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0524 - mae: 0.1620 - val_loss: 0.0620 - val_mae: 0.1809\n",
            "Epoch 149/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0519 - mae: 0.1624 - val_loss: 0.0613 - val_mae: 0.1798\n",
            "Epoch 150/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0527 - mae: 0.1629 - val_loss: 0.0610 - val_mae: 0.1798\n",
            "Epoch 151/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0515 - mae: 0.1605 - val_loss: 0.0609 - val_mae: 0.1752\n",
            "Epoch 152/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0511 - mae: 0.1609 - val_loss: 0.0602 - val_mae: 0.1788\n",
            "Epoch 153/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0506 - mae: 0.1594 - val_loss: 0.0594 - val_mae: 0.1786\n",
            "Epoch 154/500\n",
            "600/600 [==============================] - 0s 64us/sample - loss: 0.0501 - mae: 0.1607 - val_loss: 0.0589 - val_mae: 0.1763\n",
            "Epoch 155/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0497 - mae: 0.1576 - val_loss: 0.0587 - val_mae: 0.1762\n",
            "Epoch 156/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0493 - mae: 0.1585 - val_loss: 0.0581 - val_mae: 0.1756\n",
            "Epoch 157/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0489 - mae: 0.1575 - val_loss: 0.0581 - val_mae: 0.1780\n",
            "Epoch 158/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0486 - mae: 0.1582 - val_loss: 0.0574 - val_mae: 0.1728\n",
            "Epoch 159/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0488 - mae: 0.1552 - val_loss: 0.0576 - val_mae: 0.1777\n",
            "Epoch 160/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0501 - mae: 0.1633 - val_loss: 0.0567 - val_mae: 0.1750\n",
            "Epoch 161/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.0481 - mae: 0.1568 - val_loss: 0.0562 - val_mae: 0.1750\n",
            "Epoch 162/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0476 - mae: 0.1569 - val_loss: 0.0553 - val_mae: 0.1706\n",
            "Epoch 163/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0464 - mae: 0.1533 - val_loss: 0.0549 - val_mae: 0.1717\n",
            "Epoch 164/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0470 - mae: 0.1559 - val_loss: 0.0550 - val_mae: 0.1696\n",
            "Epoch 165/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0463 - mae: 0.1526 - val_loss: 0.0543 - val_mae: 0.1669\n",
            "Epoch 166/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0467 - mae: 0.1530 - val_loss: 0.0536 - val_mae: 0.1685\n",
            "Epoch 167/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0465 - mae: 0.1521 - val_loss: 0.0536 - val_mae: 0.1691\n",
            "Epoch 168/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0462 - mae: 0.1570 - val_loss: 0.0530 - val_mae: 0.1681\n",
            "Epoch 169/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0448 - mae: 0.1514 - val_loss: 0.0523 - val_mae: 0.1679\n",
            "Epoch 170/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0441 - mae: 0.1509 - val_loss: 0.0518 - val_mae: 0.1668\n",
            "Epoch 171/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0438 - mae: 0.1488 - val_loss: 0.0516 - val_mae: 0.1668\n",
            "Epoch 172/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0437 - mae: 0.1509 - val_loss: 0.0510 - val_mae: 0.1649\n",
            "Epoch 173/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0431 - mae: 0.1479 - val_loss: 0.0507 - val_mae: 0.1658\n",
            "Epoch 174/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0432 - mae: 0.1493 - val_loss: 0.0503 - val_mae: 0.1634\n",
            "Epoch 175/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0427 - mae: 0.1467 - val_loss: 0.0502 - val_mae: 0.1667\n",
            "Epoch 176/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0425 - mae: 0.1475 - val_loss: 0.0494 - val_mae: 0.1618\n",
            "Epoch 177/500\n",
            "600/600 [==============================] - 0s 43us/sample - loss: 0.0426 - mae: 0.1497 - val_loss: 0.0491 - val_mae: 0.1618\n",
            "Epoch 178/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0416 - mae: 0.1454 - val_loss: 0.0489 - val_mae: 0.1635\n",
            "Epoch 179/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0414 - mae: 0.1467 - val_loss: 0.0483 - val_mae: 0.1599\n",
            "Epoch 180/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0411 - mae: 0.1439 - val_loss: 0.0489 - val_mae: 0.1651\n",
            "Epoch 181/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0418 - mae: 0.1485 - val_loss: 0.0477 - val_mae: 0.1597\n",
            "Epoch 182/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0405 - mae: 0.1445 - val_loss: 0.0473 - val_mae: 0.1612\n",
            "Epoch 183/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0399 - mae: 0.1435 - val_loss: 0.0466 - val_mae: 0.1579\n",
            "Epoch 184/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0399 - mae: 0.1432 - val_loss: 0.0465 - val_mae: 0.1561\n",
            "Epoch 185/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0397 - mae: 0.1437 - val_loss: 0.0459 - val_mae: 0.1573\n",
            "Epoch 186/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0394 - mae: 0.1424 - val_loss: 0.0455 - val_mae: 0.1582\n",
            "Epoch 187/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0385 - mae: 0.1411 - val_loss: 0.0453 - val_mae: 0.1544\n",
            "Epoch 188/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0385 - mae: 0.1403 - val_loss: 0.0447 - val_mae: 0.1545\n",
            "Epoch 189/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0381 - mae: 0.1392 - val_loss: 0.0444 - val_mae: 0.1549\n",
            "Epoch 190/500\n",
            "600/600 [==============================] - 0s 61us/sample - loss: 0.0378 - mae: 0.1402 - val_loss: 0.0441 - val_mae: 0.1529\n",
            "Epoch 191/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0376 - mae: 0.1390 - val_loss: 0.0441 - val_mae: 0.1574\n",
            "Epoch 192/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0378 - mae: 0.1397 - val_loss: 0.0431 - val_mae: 0.1533\n",
            "Epoch 193/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0376 - mae: 0.1401 - val_loss: 0.0430 - val_mae: 0.1538\n",
            "Epoch 194/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0372 - mae: 0.1376 - val_loss: 0.0433 - val_mae: 0.1548\n",
            "Epoch 195/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0376 - mae: 0.1412 - val_loss: 0.0429 - val_mae: 0.1508\n",
            "Epoch 196/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0365 - mae: 0.1383 - val_loss: 0.0419 - val_mae: 0.1529\n",
            "Epoch 197/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0361 - mae: 0.1353 - val_loss: 0.0416 - val_mae: 0.1485\n",
            "Epoch 198/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0354 - mae: 0.1353 - val_loss: 0.0411 - val_mae: 0.1506\n",
            "Epoch 199/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0354 - mae: 0.1363 - val_loss: 0.0410 - val_mae: 0.1504\n",
            "Epoch 200/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0354 - mae: 0.1358 - val_loss: 0.0410 - val_mae: 0.1511\n",
            "Epoch 201/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0348 - mae: 0.1349 - val_loss: 0.0399 - val_mae: 0.1475\n",
            "Epoch 202/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0345 - mae: 0.1342 - val_loss: 0.0396 - val_mae: 0.1476\n",
            "Epoch 203/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0342 - mae: 0.1345 - val_loss: 0.0395 - val_mae: 0.1455\n",
            "Epoch 204/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0337 - mae: 0.1321 - val_loss: 0.0390 - val_mae: 0.1462\n",
            "Epoch 205/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0336 - mae: 0.1328 - val_loss: 0.0389 - val_mae: 0.1445\n",
            "Epoch 206/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0337 - mae: 0.1317 - val_loss: 0.0392 - val_mae: 0.1497\n",
            "Epoch 207/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0335 - mae: 0.1326 - val_loss: 0.0384 - val_mae: 0.1436\n",
            "Epoch 208/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0329 - mae: 0.1310 - val_loss: 0.0376 - val_mae: 0.1444\n",
            "Epoch 209/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0328 - mae: 0.1298 - val_loss: 0.0375 - val_mae: 0.1454\n",
            "Epoch 210/500\n",
            "600/600 [==============================] - 0s 44us/sample - loss: 0.0328 - mae: 0.1328 - val_loss: 0.0370 - val_mae: 0.1432\n",
            "Epoch 211/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0331 - mae: 0.1310 - val_loss: 0.0369 - val_mae: 0.1413\n",
            "Epoch 212/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0317 - mae: 0.1290 - val_loss: 0.0367 - val_mae: 0.1449\n",
            "Epoch 213/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0318 - mae: 0.1291 - val_loss: 0.0360 - val_mae: 0.1425\n",
            "Epoch 214/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0312 - mae: 0.1284 - val_loss: 0.0356 - val_mae: 0.1413\n",
            "Epoch 215/500\n",
            "600/600 [==============================] - 0s 65us/sample - loss: 0.0309 - mae: 0.1273 - val_loss: 0.0356 - val_mae: 0.1423\n",
            "Epoch 216/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0310 - mae: 0.1280 - val_loss: 0.0350 - val_mae: 0.1396\n",
            "Epoch 217/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0303 - mae: 0.1263 - val_loss: 0.0346 - val_mae: 0.1400\n",
            "Epoch 218/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0302 - mae: 0.1267 - val_loss: 0.0343 - val_mae: 0.1390\n",
            "Epoch 219/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0299 - mae: 0.1258 - val_loss: 0.0340 - val_mae: 0.1377\n",
            "Epoch 220/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0299 - mae: 0.1262 - val_loss: 0.0338 - val_mae: 0.1374\n",
            "Epoch 221/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0294 - mae: 0.1246 - val_loss: 0.0337 - val_mae: 0.1395\n",
            "Epoch 222/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0299 - mae: 0.1275 - val_loss: 0.0340 - val_mae: 0.1394\n",
            "Epoch 223/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0295 - mae: 0.1251 - val_loss: 0.0331 - val_mae: 0.1378\n",
            "Epoch 224/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0290 - mae: 0.1228 - val_loss: 0.0325 - val_mae: 0.1361\n",
            "Epoch 225/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0291 - mae: 0.1254 - val_loss: 0.0321 - val_mae: 0.1344\n",
            "Epoch 226/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0286 - mae: 0.1237 - val_loss: 0.0318 - val_mae: 0.1340\n",
            "Epoch 227/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0281 - mae: 0.1219 - val_loss: 0.0315 - val_mae: 0.1331\n",
            "Epoch 228/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0280 - mae: 0.1221 - val_loss: 0.0313 - val_mae: 0.1345\n",
            "Epoch 229/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0276 - mae: 0.1202 - val_loss: 0.0310 - val_mae: 0.1333\n",
            "Epoch 230/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0276 - mae: 0.1215 - val_loss: 0.0308 - val_mae: 0.1313\n",
            "Epoch 231/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0274 - mae: 0.1214 - val_loss: 0.0319 - val_mae: 0.1382\n",
            "Epoch 232/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0281 - mae: 0.1242 - val_loss: 0.0304 - val_mae: 0.1305\n",
            "Epoch 233/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0268 - mae: 0.1195 - val_loss: 0.0299 - val_mae: 0.1320\n",
            "Epoch 234/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0264 - mae: 0.1187 - val_loss: 0.0296 - val_mae: 0.1302\n",
            "Epoch 235/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0267 - mae: 0.1206 - val_loss: 0.0299 - val_mae: 0.1285\n",
            "Epoch 236/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0272 - mae: 0.1182 - val_loss: 0.0309 - val_mae: 0.1363\n",
            "Epoch 237/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0273 - mae: 0.1209 - val_loss: 0.0286 - val_mae: 0.1297\n",
            "Epoch 238/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0260 - mae: 0.1191 - val_loss: 0.0286 - val_mae: 0.1276\n",
            "Epoch 239/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0259 - mae: 0.1173 - val_loss: 0.0283 - val_mae: 0.1279\n",
            "Epoch 240/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0255 - mae: 0.1157 - val_loss: 0.0279 - val_mae: 0.1281\n",
            "Epoch 241/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0253 - mae: 0.1162 - val_loss: 0.0280 - val_mae: 0.1294\n",
            "Epoch 242/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0256 - mae: 0.1178 - val_loss: 0.0273 - val_mae: 0.1259\n",
            "Epoch 243/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0245 - mae: 0.1144 - val_loss: 0.0276 - val_mae: 0.1287\n",
            "Epoch 244/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0252 - mae: 0.1163 - val_loss: 0.0268 - val_mae: 0.1263\n",
            "Epoch 245/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0261 - mae: 0.1201 - val_loss: 0.0295 - val_mae: 0.1333\n",
            "Epoch 246/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0268 - mae: 0.1231 - val_loss: 0.0279 - val_mae: 0.1302\n",
            "Epoch 247/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0240 - mae: 0.1149 - val_loss: 0.0263 - val_mae: 0.1242\n",
            "Epoch 248/500\n",
            "600/600 [==============================] - 0s 66us/sample - loss: 0.0242 - mae: 0.1146 - val_loss: 0.0259 - val_mae: 0.1249\n",
            "Epoch 249/500\n",
            "600/600 [==============================] - 0s 69us/sample - loss: 0.0233 - mae: 0.1129 - val_loss: 0.0277 - val_mae: 0.1258\n",
            "Epoch 250/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0246 - mae: 0.1158 - val_loss: 0.0255 - val_mae: 0.1237\n",
            "Epoch 251/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0231 - mae: 0.1114 - val_loss: 0.0249 - val_mae: 0.1216\n",
            "Epoch 252/500\n",
            "600/600 [==============================] - 0s 63us/sample - loss: 0.0230 - mae: 0.1122 - val_loss: 0.0246 - val_mae: 0.1216\n",
            "Epoch 253/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0229 - mae: 0.1109 - val_loss: 0.0247 - val_mae: 0.1228\n",
            "Epoch 254/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0230 - mae: 0.1122 - val_loss: 0.0242 - val_mae: 0.1204\n",
            "Epoch 255/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0233 - mae: 0.1139 - val_loss: 0.0252 - val_mae: 0.1209\n",
            "Epoch 256/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0225 - mae: 0.1102 - val_loss: 0.0239 - val_mae: 0.1197\n",
            "Epoch 257/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0219 - mae: 0.1086 - val_loss: 0.0235 - val_mae: 0.1197\n",
            "Epoch 258/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0217 - mae: 0.1091 - val_loss: 0.0234 - val_mae: 0.1188\n",
            "Epoch 259/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0215 - mae: 0.1082 - val_loss: 0.0231 - val_mae: 0.1184\n",
            "Epoch 260/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0214 - mae: 0.1080 - val_loss: 0.0228 - val_mae: 0.1183\n",
            "Epoch 261/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0214 - mae: 0.1081 - val_loss: 0.0226 - val_mae: 0.1175\n",
            "Epoch 262/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0211 - mae: 0.1077 - val_loss: 0.0224 - val_mae: 0.1177\n",
            "Epoch 263/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0210 - mae: 0.1075 - val_loss: 0.0223 - val_mae: 0.1176\n",
            "Epoch 264/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0209 - mae: 0.1079 - val_loss: 0.0223 - val_mae: 0.1164\n",
            "Epoch 265/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0208 - mae: 0.1073 - val_loss: 0.0219 - val_mae: 0.1165\n",
            "Epoch 266/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0209 - mae: 0.1084 - val_loss: 0.0221 - val_mae: 0.1149\n",
            "Epoch 267/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0206 - mae: 0.1075 - val_loss: 0.0215 - val_mae: 0.1148\n",
            "Epoch 268/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0203 - mae: 0.1062 - val_loss: 0.0212 - val_mae: 0.1142\n",
            "Epoch 269/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0201 - mae: 0.1055 - val_loss: 0.0212 - val_mae: 0.1141\n",
            "Epoch 270/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0200 - mae: 0.1063 - val_loss: 0.0213 - val_mae: 0.1137\n",
            "Epoch 271/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0201 - mae: 0.1066 - val_loss: 0.0211 - val_mae: 0.1127\n",
            "Epoch 272/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0205 - mae: 0.1074 - val_loss: 0.0203 - val_mae: 0.1131\n",
            "Epoch 273/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0197 - mae: 0.1052 - val_loss: 0.0202 - val_mae: 0.1123\n",
            "Epoch 274/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0194 - mae: 0.1043 - val_loss: 0.0201 - val_mae: 0.1119\n",
            "Epoch 275/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0192 - mae: 0.1038 - val_loss: 0.0199 - val_mae: 0.1118\n",
            "Epoch 276/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0191 - mae: 0.1040 - val_loss: 0.0200 - val_mae: 0.1113\n",
            "Epoch 277/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0191 - mae: 0.1043 - val_loss: 0.0199 - val_mae: 0.1117\n",
            "Epoch 278/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0194 - mae: 0.1051 - val_loss: 0.0195 - val_mae: 0.1111\n",
            "Epoch 279/500\n",
            "600/600 [==============================] - 0s 65us/sample - loss: 0.0186 - mae: 0.1031 - val_loss: 0.0197 - val_mae: 0.1098\n",
            "Epoch 280/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0187 - mae: 0.1031 - val_loss: 0.0192 - val_mae: 0.1103\n",
            "Epoch 281/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0186 - mae: 0.1031 - val_loss: 0.0192 - val_mae: 0.1098\n",
            "Epoch 282/500\n",
            "600/600 [==============================] - 0s 63us/sample - loss: 0.0185 - mae: 0.1031 - val_loss: 0.0190 - val_mae: 0.1092\n",
            "Epoch 283/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.0183 - mae: 0.1022 - val_loss: 0.0188 - val_mae: 0.1097\n",
            "Epoch 284/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0181 - mae: 0.1020 - val_loss: 0.0186 - val_mae: 0.1086\n",
            "Epoch 285/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0183 - mae: 0.1025 - val_loss: 0.0192 - val_mae: 0.1085\n",
            "Epoch 286/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0190 - mae: 0.1057 - val_loss: 0.0190 - val_mae: 0.1106\n",
            "Epoch 287/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0181 - mae: 0.1022 - val_loss: 0.0181 - val_mae: 0.1077\n",
            "Epoch 288/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0177 - mae: 0.1012 - val_loss: 0.0181 - val_mae: 0.1072\n",
            "Epoch 289/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0175 - mae: 0.1003 - val_loss: 0.0182 - val_mae: 0.1082\n",
            "Epoch 290/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0180 - mae: 0.1028 - val_loss: 0.0179 - val_mae: 0.1064\n",
            "Epoch 291/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0175 - mae: 0.1013 - val_loss: 0.0179 - val_mae: 0.1063\n",
            "Epoch 292/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0175 - mae: 0.1014 - val_loss: 0.0177 - val_mae: 0.1067\n",
            "Epoch 293/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0176 - mae: 0.1018 - val_loss: 0.0171 - val_mae: 0.1051\n",
            "Epoch 294/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0175 - mae: 0.1010 - val_loss: 0.0175 - val_mae: 0.1050\n",
            "Epoch 295/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0176 - mae: 0.1015 - val_loss: 0.0174 - val_mae: 0.1056\n",
            "Epoch 296/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0173 - mae: 0.1017 - val_loss: 0.0172 - val_mae: 0.1040\n",
            "Epoch 297/500\n",
            "600/600 [==============================] - 0s 63us/sample - loss: 0.0168 - mae: 0.0999 - val_loss: 0.0169 - val_mae: 0.1046\n",
            "Epoch 298/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0169 - mae: 0.1001 - val_loss: 0.0166 - val_mae: 0.1035\n",
            "Epoch 299/500\n",
            "600/600 [==============================] - 0s 141us/sample - loss: 0.0168 - mae: 0.0994 - val_loss: 0.0168 - val_mae: 0.1035\n",
            "Epoch 300/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0166 - mae: 0.0999 - val_loss: 0.0162 - val_mae: 0.1026\n",
            "Epoch 301/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0164 - mae: 0.0985 - val_loss: 0.0164 - val_mae: 0.1026\n",
            "Epoch 302/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0162 - mae: 0.0988 - val_loss: 0.0165 - val_mae: 0.1026\n",
            "Epoch 303/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0164 - mae: 0.0989 - val_loss: 0.0161 - val_mae: 0.1022\n",
            "Epoch 304/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0163 - mae: 0.0988 - val_loss: 0.0161 - val_mae: 0.1026\n",
            "Epoch 305/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0163 - mae: 0.0993 - val_loss: 0.0158 - val_mae: 0.1015\n",
            "Epoch 306/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0162 - mae: 0.0989 - val_loss: 0.0161 - val_mae: 0.1020\n",
            "Epoch 307/500\n",
            "600/600 [==============================] - 0s 76us/sample - loss: 0.0166 - mae: 0.1004 - val_loss: 0.0158 - val_mae: 0.1011\n",
            "Epoch 308/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0160 - mae: 0.0984 - val_loss: 0.0158 - val_mae: 0.1004\n",
            "Epoch 309/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0160 - mae: 0.0983 - val_loss: 0.0160 - val_mae: 0.1012\n",
            "Epoch 310/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0170 - mae: 0.1013 - val_loss: 0.0159 - val_mae: 0.1016\n",
            "Epoch 311/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0160 - mae: 0.0983 - val_loss: 0.0192 - val_mae: 0.1091\n",
            "Epoch 312/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0185 - mae: 0.1053 - val_loss: 0.0153 - val_mae: 0.1004\n",
            "Epoch 313/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0161 - mae: 0.0997 - val_loss: 0.0162 - val_mae: 0.1010\n",
            "Epoch 314/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0153 - mae: 0.0966 - val_loss: 0.0154 - val_mae: 0.1006\n",
            "Epoch 315/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0162 - mae: 0.1002 - val_loss: 0.0152 - val_mae: 0.0999\n",
            "Epoch 316/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0162 - mae: 0.0999 - val_loss: 0.0158 - val_mae: 0.0996\n",
            "Epoch 317/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0158 - mae: 0.0985 - val_loss: 0.0170 - val_mae: 0.1026\n",
            "Epoch 318/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0167 - mae: 0.1021 - val_loss: 0.0148 - val_mae: 0.0981\n",
            "Epoch 319/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0161 - mae: 0.0994 - val_loss: 0.0157 - val_mae: 0.1011\n",
            "Epoch 320/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0148 - mae: 0.0950 - val_loss: 0.0144 - val_mae: 0.0973\n",
            "Epoch 321/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.0147 - mae: 0.0954 - val_loss: 0.0152 - val_mae: 0.0983\n",
            "Epoch 322/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0149 - mae: 0.0955 - val_loss: 0.0147 - val_mae: 0.0982\n",
            "Epoch 323/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0149 - mae: 0.0956 - val_loss: 0.0145 - val_mae: 0.0977\n",
            "Epoch 324/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0147 - mae: 0.0956 - val_loss: 0.0142 - val_mae: 0.0963\n",
            "Epoch 325/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0145 - mae: 0.0950 - val_loss: 0.0144 - val_mae: 0.0974\n",
            "Epoch 326/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0147 - mae: 0.0957 - val_loss: 0.0141 - val_mae: 0.0965\n",
            "Epoch 327/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0147 - mae: 0.0960 - val_loss: 0.0144 - val_mae: 0.0973\n",
            "Epoch 328/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0145 - mae: 0.0944 - val_loss: 0.0141 - val_mae: 0.0959\n",
            "Epoch 329/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0145 - mae: 0.0952 - val_loss: 0.0137 - val_mae: 0.0949\n",
            "Epoch 330/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0143 - mae: 0.0944 - val_loss: 0.0139 - val_mae: 0.0952\n",
            "Epoch 331/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0143 - mae: 0.0941 - val_loss: 0.0139 - val_mae: 0.0947\n",
            "Epoch 332/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0141 - mae: 0.0941 - val_loss: 0.0139 - val_mae: 0.0949\n",
            "Epoch 333/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0149 - mae: 0.0951 - val_loss: 0.0148 - val_mae: 0.0968\n",
            "Epoch 334/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0148 - mae: 0.0957 - val_loss: 0.0151 - val_mae: 0.0979\n",
            "Epoch 335/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0151 - mae: 0.0966 - val_loss: 0.0139 - val_mae: 0.0945\n",
            "Epoch 336/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0141 - mae: 0.0932 - val_loss: 0.0140 - val_mae: 0.0954\n",
            "Epoch 337/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.0141 - mae: 0.0936 - val_loss: 0.0133 - val_mae: 0.0934\n",
            "Epoch 338/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0141 - mae: 0.0932 - val_loss: 0.0137 - val_mae: 0.0943\n",
            "Epoch 339/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.0139 - mae: 0.0931 - val_loss: 0.0132 - val_mae: 0.0929\n",
            "Epoch 340/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0136 - mae: 0.0923 - val_loss: 0.0132 - val_mae: 0.0929\n",
            "Epoch 341/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0137 - mae: 0.0925 - val_loss: 0.0146 - val_mae: 0.0963\n",
            "Epoch 342/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0140 - mae: 0.0947 - val_loss: 0.0139 - val_mae: 0.0946\n",
            "Epoch 343/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0139 - mae: 0.0940 - val_loss: 0.0136 - val_mae: 0.0934\n",
            "Epoch 344/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0135 - mae: 0.0920 - val_loss: 0.0132 - val_mae: 0.0925\n",
            "Epoch 345/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0136 - mae: 0.0923 - val_loss: 0.0134 - val_mae: 0.0932\n",
            "Epoch 346/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0134 - mae: 0.0922 - val_loss: 0.0130 - val_mae: 0.0919\n",
            "Epoch 347/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0133 - mae: 0.0920 - val_loss: 0.0137 - val_mae: 0.0937\n",
            "Epoch 348/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0134 - mae: 0.0926 - val_loss: 0.0133 - val_mae: 0.0926\n",
            "Epoch 349/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0139 - mae: 0.0941 - val_loss: 0.0135 - val_mae: 0.0929\n",
            "Epoch 350/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0133 - mae: 0.0904 - val_loss: 0.0126 - val_mae: 0.0907\n",
            "Epoch 351/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0134 - mae: 0.0916 - val_loss: 0.0128 - val_mae: 0.0912\n",
            "Epoch 352/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0137 - mae: 0.0928 - val_loss: 0.0131 - val_mae: 0.0916\n",
            "Epoch 353/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0144 - mae: 0.0947 - val_loss: 0.0126 - val_mae: 0.0904\n",
            "Epoch 354/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0131 - mae: 0.0910 - val_loss: 0.0132 - val_mae: 0.0923\n",
            "Epoch 355/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0138 - mae: 0.0930 - val_loss: 0.0131 - val_mae: 0.0919\n",
            "Epoch 356/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0135 - mae: 0.0926 - val_loss: 0.0126 - val_mae: 0.0904\n",
            "Epoch 357/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0131 - mae: 0.0907 - val_loss: 0.0138 - val_mae: 0.0940\n",
            "Epoch 358/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0132 - mae: 0.0907 - val_loss: 0.0126 - val_mae: 0.0904\n",
            "Epoch 359/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0129 - mae: 0.0903 - val_loss: 0.0127 - val_mae: 0.0907\n",
            "Epoch 360/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0128 - mae: 0.0900 - val_loss: 0.0126 - val_mae: 0.0902\n",
            "Epoch 361/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0133 - mae: 0.0909 - val_loss: 0.0126 - val_mae: 0.0905\n",
            "Epoch 362/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0130 - mae: 0.0907 - val_loss: 0.0125 - val_mae: 0.0898\n",
            "Epoch 363/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0129 - mae: 0.0899 - val_loss: 0.0124 - val_mae: 0.0896\n",
            "Epoch 364/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0129 - mae: 0.0903 - val_loss: 0.0126 - val_mae: 0.0900\n",
            "Epoch 365/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0129 - mae: 0.0898 - val_loss: 0.0125 - val_mae: 0.0901\n",
            "Epoch 366/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0129 - mae: 0.0910 - val_loss: 0.0131 - val_mae: 0.0912\n",
            "Epoch 367/500\n",
            "600/600 [==============================] - 0s 72us/sample - loss: 0.0127 - mae: 0.0895 - val_loss: 0.0122 - val_mae: 0.0890\n",
            "Epoch 368/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0129 - mae: 0.0905 - val_loss: 0.0126 - val_mae: 0.0905\n",
            "Epoch 369/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0129 - mae: 0.0902 - val_loss: 0.0123 - val_mae: 0.0889\n",
            "Epoch 370/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0127 - mae: 0.0899 - val_loss: 0.0125 - val_mae: 0.0894\n",
            "Epoch 371/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0134 - mae: 0.0920 - val_loss: 0.0139 - val_mae: 0.0931\n",
            "Epoch 372/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0134 - mae: 0.0916 - val_loss: 0.0129 - val_mae: 0.0905\n",
            "Epoch 373/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0129 - mae: 0.0907 - val_loss: 0.0126 - val_mae: 0.0897\n",
            "Epoch 374/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0128 - mae: 0.0899 - val_loss: 0.0121 - val_mae: 0.0879\n",
            "Epoch 375/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0133 - mae: 0.0923 - val_loss: 0.0125 - val_mae: 0.0904\n",
            "Epoch 376/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0129 - mae: 0.0908 - val_loss: 0.0130 - val_mae: 0.0915\n",
            "Epoch 377/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0129 - mae: 0.0911 - val_loss: 0.0119 - val_mae: 0.0877\n",
            "Epoch 378/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0138 - mae: 0.0941 - val_loss: 0.0121 - val_mae: 0.0881\n",
            "Epoch 379/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0127 - mae: 0.0898 - val_loss: 0.0127 - val_mae: 0.0895\n",
            "Epoch 380/500\n",
            "600/600 [==============================] - 0s 46us/sample - loss: 0.0129 - mae: 0.0903 - val_loss: 0.0120 - val_mae: 0.0876\n",
            "Epoch 381/500\n",
            "600/600 [==============================] - 0s 45us/sample - loss: 0.0126 - mae: 0.0896 - val_loss: 0.0120 - val_mae: 0.0876\n",
            "Epoch 382/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0130 - mae: 0.0917 - val_loss: 0.0121 - val_mae: 0.0880\n",
            "Epoch 383/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0126 - mae: 0.0895 - val_loss: 0.0120 - val_mae: 0.0882\n",
            "Epoch 384/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0128 - mae: 0.0910 - val_loss: 0.0150 - val_mae: 0.0983\n",
            "Epoch 385/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0134 - mae: 0.0912 - val_loss: 0.0118 - val_mae: 0.0876\n",
            "Epoch 386/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0124 - mae: 0.0892 - val_loss: 0.0123 - val_mae: 0.0886\n",
            "Epoch 387/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0127 - mae: 0.0898 - val_loss: 0.0128 - val_mae: 0.0900\n",
            "Epoch 388/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0128 - mae: 0.0903 - val_loss: 0.0129 - val_mae: 0.0906\n",
            "Epoch 389/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0148 - mae: 0.0984 - val_loss: 0.0121 - val_mae: 0.0880\n",
            "Epoch 390/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0137 - mae: 0.0939 - val_loss: 0.0118 - val_mae: 0.0874\n",
            "Epoch 391/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0127 - mae: 0.0896 - val_loss: 0.0122 - val_mae: 0.0893\n",
            "Epoch 392/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0124 - mae: 0.0888 - val_loss: 0.0118 - val_mae: 0.0873\n",
            "Epoch 393/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0124 - mae: 0.0887 - val_loss: 0.0119 - val_mae: 0.0879\n",
            "Epoch 394/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.0124 - mae: 0.0885 - val_loss: 0.0117 - val_mae: 0.0865\n",
            "Epoch 395/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0128 - mae: 0.0904 - val_loss: 0.0121 - val_mae: 0.0880\n",
            "Epoch 396/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0126 - mae: 0.0895 - val_loss: 0.0119 - val_mae: 0.0874\n",
            "Epoch 397/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0124 - mae: 0.0883 - val_loss: 0.0120 - val_mae: 0.0880\n",
            "Epoch 398/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0130 - mae: 0.0906 - val_loss: 0.0122 - val_mae: 0.0891\n",
            "Epoch 399/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0136 - mae: 0.0935 - val_loss: 0.0128 - val_mae: 0.0917\n",
            "Epoch 400/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0136 - mae: 0.0923 - val_loss: 0.0128 - val_mae: 0.0910\n",
            "Epoch 401/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0126 - mae: 0.0896 - val_loss: 0.0134 - val_mae: 0.0934\n",
            "Epoch 402/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0135 - mae: 0.0925 - val_loss: 0.0127 - val_mae: 0.0910\n",
            "Epoch 403/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0129 - mae: 0.0904 - val_loss: 0.0117 - val_mae: 0.0868\n",
            "Epoch 404/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0126 - mae: 0.0898 - val_loss: 0.0140 - val_mae: 0.0928\n",
            "Epoch 405/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0132 - mae: 0.0928 - val_loss: 0.0117 - val_mae: 0.0869\n",
            "Epoch 406/500\n",
            "600/600 [==============================] - 0s 47us/sample - loss: 0.0126 - mae: 0.0906 - val_loss: 0.0128 - val_mae: 0.0908\n",
            "Epoch 407/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0122 - mae: 0.0880 - val_loss: 0.0117 - val_mae: 0.0870\n",
            "Epoch 408/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0125 - mae: 0.0897 - val_loss: 0.0119 - val_mae: 0.0875\n",
            "Epoch 409/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0124 - mae: 0.0889 - val_loss: 0.0118 - val_mae: 0.0869\n",
            "Epoch 410/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0124 - mae: 0.0888 - val_loss: 0.0117 - val_mae: 0.0868\n",
            "Epoch 411/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0122 - mae: 0.0886 - val_loss: 0.0139 - val_mae: 0.0933\n",
            "Epoch 412/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0132 - mae: 0.0923 - val_loss: 0.0125 - val_mae: 0.0891\n",
            "Epoch 413/500\n",
            "600/600 [==============================] - 0s 62us/sample - loss: 0.0140 - mae: 0.0938 - val_loss: 0.0119 - val_mae: 0.0875\n",
            "Epoch 414/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0134 - mae: 0.0917 - val_loss: 0.0125 - val_mae: 0.0897\n",
            "Epoch 415/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0131 - mae: 0.0917 - val_loss: 0.0126 - val_mae: 0.0904\n",
            "Epoch 416/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0128 - mae: 0.0900 - val_loss: 0.0129 - val_mae: 0.0912\n",
            "Epoch 417/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0124 - mae: 0.0890 - val_loss: 0.0118 - val_mae: 0.0874\n",
            "Epoch 418/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0128 - mae: 0.0899 - val_loss: 0.0132 - val_mae: 0.0925\n",
            "Epoch 419/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0131 - mae: 0.0917 - val_loss: 0.0120 - val_mae: 0.0882\n",
            "Epoch 420/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0124 - mae: 0.0884 - val_loss: 0.0130 - val_mae: 0.0919\n",
            "Epoch 421/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0131 - mae: 0.0914 - val_loss: 0.0130 - val_mae: 0.0916\n",
            "Epoch 422/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0133 - mae: 0.0921 - val_loss: 0.0115 - val_mae: 0.0864\n",
            "Epoch 423/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0123 - mae: 0.0886 - val_loss: 0.0120 - val_mae: 0.0876\n",
            "Epoch 424/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0122 - mae: 0.0883 - val_loss: 0.0141 - val_mae: 0.0935\n",
            "Epoch 425/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0136 - mae: 0.0936 - val_loss: 0.0117 - val_mae: 0.0869\n",
            "Epoch 426/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0134 - mae: 0.0922 - val_loss: 0.0116 - val_mae: 0.0868\n",
            "Epoch 427/500\n",
            "600/600 [==============================] - 0s 66us/sample - loss: 0.0121 - mae: 0.0879 - val_loss: 0.0116 - val_mae: 0.0867\n",
            "Epoch 428/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0121 - mae: 0.0882 - val_loss: 0.0121 - val_mae: 0.0881\n",
            "Epoch 429/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0125 - mae: 0.0895 - val_loss: 0.0114 - val_mae: 0.0859\n",
            "Epoch 430/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0123 - mae: 0.0883 - val_loss: 0.0129 - val_mae: 0.0901\n",
            "Epoch 431/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0126 - mae: 0.0900 - val_loss: 0.0120 - val_mae: 0.0877\n",
            "Epoch 432/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0123 - mae: 0.0882 - val_loss: 0.0118 - val_mae: 0.0870\n",
            "Epoch 433/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.0120 - mae: 0.0879 - val_loss: 0.0120 - val_mae: 0.0878\n",
            "Epoch 434/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0122 - mae: 0.0877 - val_loss: 0.0114 - val_mae: 0.0861\n",
            "Epoch 435/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0120 - mae: 0.0877 - val_loss: 0.0120 - val_mae: 0.0876\n",
            "Epoch 436/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0122 - mae: 0.0885 - val_loss: 0.0115 - val_mae: 0.0862\n",
            "Epoch 437/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0120 - mae: 0.0882 - val_loss: 0.0117 - val_mae: 0.0867\n",
            "Epoch 438/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0865\n",
            "Epoch 439/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0122 - mae: 0.0885 - val_loss: 0.0116 - val_mae: 0.0864\n",
            "Epoch 440/500\n",
            "600/600 [==============================] - 0s 65us/sample - loss: 0.0122 - mae: 0.0888 - val_loss: 0.0123 - val_mae: 0.0889\n",
            "Epoch 441/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0120 - mae: 0.0886 - val_loss: 0.0116 - val_mae: 0.0864\n",
            "Epoch 442/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0124 - mae: 0.0880 - val_loss: 0.0120 - val_mae: 0.0880\n",
            "Epoch 443/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0121 - mae: 0.0875 - val_loss: 0.0123 - val_mae: 0.0885\n",
            "Epoch 444/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0124 - mae: 0.0895 - val_loss: 0.0118 - val_mae: 0.0875\n",
            "Epoch 445/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0126 - mae: 0.0902 - val_loss: 0.0117 - val_mae: 0.0869\n",
            "Epoch 446/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0121 - mae: 0.0873 - val_loss: 0.0132 - val_mae: 0.0925\n",
            "Epoch 447/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0124 - mae: 0.0883 - val_loss: 0.0124 - val_mae: 0.0890\n",
            "Epoch 448/500\n",
            "600/600 [==============================] - 0s 69us/sample - loss: 0.0120 - mae: 0.0877 - val_loss: 0.0115 - val_mae: 0.0863\n",
            "Epoch 449/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0122 - mae: 0.0885 - val_loss: 0.0115 - val_mae: 0.0865\n",
            "Epoch 450/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0125 - mae: 0.0904 - val_loss: 0.0118 - val_mae: 0.0872\n",
            "Epoch 451/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0869 - val_loss: 0.0126 - val_mae: 0.0895\n",
            "Epoch 452/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0124 - mae: 0.0890 - val_loss: 0.0116 - val_mae: 0.0867\n",
            "Epoch 453/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0117 - val_mae: 0.0868\n",
            "Epoch 454/500\n",
            "600/600 [==============================] - 0s 49us/sample - loss: 0.0120 - mae: 0.0878 - val_loss: 0.0116 - val_mae: 0.0863\n",
            "Epoch 455/500\n",
            "600/600 [==============================] - 0s 61us/sample - loss: 0.0120 - mae: 0.0878 - val_loss: 0.0117 - val_mae: 0.0870\n",
            "Epoch 456/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0118 - mae: 0.0869 - val_loss: 0.0115 - val_mae: 0.0862\n",
            "Epoch 457/500\n",
            "600/600 [==============================] - 0s 66us/sample - loss: 0.0121 - mae: 0.0883 - val_loss: 0.0116 - val_mae: 0.0866\n",
            "Epoch 458/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.0121 - mae: 0.0876 - val_loss: 0.0116 - val_mae: 0.0863\n",
            "Epoch 459/500\n",
            "600/600 [==============================] - 0s 60us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0864\n",
            "Epoch 460/500\n",
            "600/600 [==============================] - 0s 48us/sample - loss: 0.0119 - mae: 0.0871 - val_loss: 0.0115 - val_mae: 0.0862\n",
            "Epoch 461/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0120 - mae: 0.0880 - val_loss: 0.0120 - val_mae: 0.0881\n",
            "Epoch 462/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0119 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0864\n",
            "Epoch 463/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0119 - mae: 0.0873 - val_loss: 0.0117 - val_mae: 0.0866\n",
            "Epoch 464/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0118 - mae: 0.0868 - val_loss: 0.0115 - val_mae: 0.0862\n",
            "Epoch 465/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0120 - mae: 0.0875 - val_loss: 0.0124 - val_mae: 0.0896\n",
            "Epoch 466/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0117 - mae: 0.0875 - val_loss: 0.0129 - val_mae: 0.0901\n",
            "Epoch 467/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0126 - mae: 0.0907 - val_loss: 0.0127 - val_mae: 0.0898\n",
            "Epoch 468/500\n",
            "600/600 [==============================] - 0s 58us/sample - loss: 0.0125 - mae: 0.0893 - val_loss: 0.0118 - val_mae: 0.0874\n",
            "Epoch 469/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0122 - mae: 0.0887 - val_loss: 0.0115 - val_mae: 0.0864\n",
            "Epoch 470/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0874 - val_loss: 0.0119 - val_mae: 0.0876\n",
            "Epoch 471/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0118 - mae: 0.0866 - val_loss: 0.0116 - val_mae: 0.0867\n",
            "Epoch 472/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0120 - mae: 0.0873 - val_loss: 0.0118 - val_mae: 0.0872\n",
            "Epoch 473/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0121 - mae: 0.0882 - val_loss: 0.0115 - val_mae: 0.0863\n",
            "Epoch 474/500\n",
            "600/600 [==============================] - 0s 55us/sample - loss: 0.0118 - mae: 0.0871 - val_loss: 0.0117 - val_mae: 0.0867\n",
            "Epoch 475/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0120 - mae: 0.0877 - val_loss: 0.0121 - val_mae: 0.0884\n",
            "Epoch 476/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0127 - mae: 0.0902 - val_loss: 0.0119 - val_mae: 0.0877\n",
            "Epoch 477/500\n",
            "600/600 [==============================] - 0s 61us/sample - loss: 0.0122 - mae: 0.0882 - val_loss: 0.0151 - val_mae: 0.0967\n",
            "Epoch 478/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0136 - mae: 0.0933 - val_loss: 0.0123 - val_mae: 0.0889\n",
            "Epoch 479/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0121 - mae: 0.0884 - val_loss: 0.0116 - val_mae: 0.0869\n",
            "Epoch 480/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0121 - mae: 0.0883 - val_loss: 0.0118 - val_mae: 0.0877\n",
            "Epoch 481/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0120 - mae: 0.0876 - val_loss: 0.0118 - val_mae: 0.0875\n",
            "Epoch 482/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0121 - mae: 0.0887 - val_loss: 0.0116 - val_mae: 0.0865\n",
            "Epoch 483/500\n",
            "600/600 [==============================] - 0s 70us/sample - loss: 0.0122 - mae: 0.0892 - val_loss: 0.0114 - val_mae: 0.0863\n",
            "Epoch 484/500\n",
            "600/600 [==============================] - 0s 57us/sample - loss: 0.0132 - mae: 0.0926 - val_loss: 0.0115 - val_mae: 0.0866\n",
            "Epoch 485/500\n",
            "600/600 [==============================] - 0s 70us/sample - loss: 0.0138 - mae: 0.0948 - val_loss: 0.0118 - val_mae: 0.0874\n",
            "Epoch 486/500\n",
            "600/600 [==============================] - 0s 59us/sample - loss: 0.0119 - mae: 0.0879 - val_loss: 0.0114 - val_mae: 0.0860\n",
            "Epoch 487/500\n",
            "600/600 [==============================] - 0s 50us/sample - loss: 0.0118 - mae: 0.0872 - val_loss: 0.0116 - val_mae: 0.0870\n",
            "Epoch 488/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0117 - mae: 0.0870 - val_loss: 0.0114 - val_mae: 0.0861\n",
            "Epoch 489/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0118 - mae: 0.0869 - val_loss: 0.0120 - val_mae: 0.0879\n",
            "Epoch 490/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0119 - mae: 0.0873 - val_loss: 0.0115 - val_mae: 0.0863\n",
            "Epoch 491/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0118 - mae: 0.0871 - val_loss: 0.0117 - val_mae: 0.0873\n",
            "Epoch 492/500\n",
            "600/600 [==============================] - 0s 61us/sample - loss: 0.0122 - mae: 0.0886 - val_loss: 0.0127 - val_mae: 0.0899\n",
            "Epoch 493/500\n",
            "600/600 [==============================] - 0s 54us/sample - loss: 0.0122 - mae: 0.0881 - val_loss: 0.0113 - val_mae: 0.0857\n",
            "Epoch 494/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0125 - mae: 0.0898 - val_loss: 0.0119 - val_mae: 0.0880\n",
            "Epoch 495/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0123 - mae: 0.0897 - val_loss: 0.0116 - val_mae: 0.0866\n",
            "Epoch 496/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0119 - mae: 0.0875 - val_loss: 0.0115 - val_mae: 0.0866\n",
            "Epoch 497/500\n",
            "600/600 [==============================] - 0s 56us/sample - loss: 0.0118 - mae: 0.0868 - val_loss: 0.0117 - val_mae: 0.0871\n",
            "Epoch 498/500\n",
            "600/600 [==============================] - 0s 52us/sample - loss: 0.0124 - mae: 0.0889 - val_loss: 0.0116 - val_mae: 0.0866\n",
            "Epoch 499/500\n",
            "600/600 [==============================] - 0s 51us/sample - loss: 0.0119 - mae: 0.0871 - val_loss: 0.0115 - val_mae: 0.0863\n",
            "Epoch 500/500\n",
            "600/600 [==============================] - 0s 53us/sample - loss: 0.0118 - mae: 0.0873 - val_loss: 0.0115 - val_mae: 0.0864\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Mc_CQu2_IvOP",
        "colab_type": "text"
      },
      "source": [
        "### 3. Plot Metrics\n",
        "Each training epoch, the model prints out its loss and mean absolute error for training and validation. You can read this in the output above (note that your exact numbers may differ): \n",
        "\n",
        "```\n",
        "Epoch 500/500\n",
        "600/600 [==============================] - 0s 51us/sample - loss: 0.0118 - mae: 0.0873 - val_loss: 0.0105 - val_mae: 0.0832\n",
        "```\n",
        "\n",
        "You can see that we've already got a huge improvement - validation loss has dropped from 0.15 to 0.01, and validation MAE has dropped from 0.33 to 0.08.\n",
        "\n",
        "The following cell will print the same graphs we used to evaluate our original model, but showing our new training history:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "SYHGswAJJgrC",
        "colab_type": "code",
        "outputId": "bdc6e8f7-480d-4d3e-c20b-94776722360f",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 297
        }
      },
      "source": [
        "# Draw a graph of the loss, which is the distance between\n",
        "# the predicted and actual values during training and validation.\n",
        "loss = history_2.history['loss']\n",
        "val_loss = history_2.history['val_loss']\n",
        "\n",
        "epochs = range(1, len(loss) + 1)\n",
        "\n",
        "# Exclude the first few epochs so the graph is easier to read\n",
        "SKIP = 100\n",
        "\n",
        "plt.figure(figsize=(10, 4))\n",
        "plt.subplot(1, 2, 1)\n",
        "\n",
        "plt.plot(epochs[SKIP:], loss[SKIP:], 'g.', label='Training loss')\n",
        "plt.plot(epochs[SKIP:], val_loss[SKIP:], 'b.', label='Validation loss')\n",
        "plt.title('Training and validation loss')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('Loss')\n",
        "plt.legend()\n",
        "\n",
        "plt.subplot(1, 2, 2)\n",
        "\n",
        "# Draw a graph of mean absolute error, which is another way of\n",
        "# measuring the amount of error in the prediction.\n",
        "mae = history_2.history['mae']\n",
        "val_mae = history_2.history['val_mae']\n",
        "\n",
        "plt.plot(epochs[SKIP:], mae[SKIP:], 'g.', label='Training MAE')\n",
        "plt.plot(epochs[SKIP:], val_mae[SKIP:], 'b.', label='Validation MAE')\n",
        "plt.title('Training and validation mean absolute error')\n",
        "plt.xlabel('Epochs')\n",
        "plt.ylabel('MAE')\n",
        "plt.legend()\n",
        "\n",
        "plt.tight_layout()"
      ],
      "execution_count": 42,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 720x288 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "f86dWOyZKmN9",
        "colab_type": "text"
      },
      "source": [
        "Great results! From these graphs, we can see several exciting things:\n",
        "\n",
        "*   The overall loss and MAE are much better than our previous network\n",
        "*   Metrics are better for validation than training, which means the network is not overfitting\n",
        "\n",
        "The reason the metrics for validation are better than those for training is that validation metrics are calculated at the end of each epoch, while training metrics are calculated throughout the epoch, so validation happens on a model that has been trained slightly longer.\n",
        "\n",
        "This all means our network seems to be performing well! To confirm, let's check its predictions against the test dataset we set aside earlier:\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lZfztKKyhLxX",
        "colab_type": "code",
        "outputId": "7ed4e1c5-4d19-4d10-cd65-0cae30486734",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 318
        }
      },
      "source": [
        "# Calculate and print the loss on our test dataset\n",
        "loss = model_2.evaluate(x_test, y_test)\n",
        "\n",
        "# Make predictions based on our test dataset\n",
        "predictions = model_2.predict(x_test)\n",
        "\n",
        "# Graph the predictions against the actual values\n",
        "plt.clf()\n",
        "plt.title('Comparison of predictions and actual values')\n",
        "plt.plot(x_test, y_test, 'b.', label='Actual')\n",
        "plt.plot(x_test, predictions, 'r.', label='Predicted')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "\r200/1 [================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 0s 40us/sample - loss: 0.0082 - mae: 0.0827\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nrkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3h7IcvuOOS4J",
        "colab_type": "text"
      },
      "source": [
        "Much better! The evaluation metrics we printed show that the model has a low loss and MAE on the test data, and the predictions line up visually with our data fairly well.\n",
        "\n",
        "The model isn't perfect; its predictions don't form a smooth sine curve. For instance, the line is almost straight when `x` is between 4.2 and 5.2. If we wanted to go further, we could try further increasing the capacity of the model, perhaps using some techniques to defend from overfitting.\n",
        "\n",
        "However, an important part of machine learning is knowing when to quit, and this model is good enough for our use case - which is to make some LEDs blink in a pleasing pattern.\n",
        "\n",
        "## Generate a TensorFlow Lite Model"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "sHe-Wv47rhm8",
        "colab_type": "text"
      },
      "source": [
        "### 1. Generate Models with or without Quantization\n",
        "We now have an acceptably accurate model. We'll use the [TensorFlow Lite Converter](https://www.tensorflow.org/lite/convert) to convert the model into a special, space-efficient format for use on memory-constrained devices.\n",
        "\n",
        "Since this model is going to be deployed on a microcontroller, we want it to be as tiny as possible! One technique for reducing the size of models is called [quantization](https://www.tensorflow.org/lite/performance/post_training_quantization) while converting the model. It reduces the precision of the model's weights, and possibly the activations (output of each layer) as well, which saves memory, often without much impact on accuracy. Quantized models also run faster, since the calculations required are simpler.\n",
        "\n",
        "*Note: Currently, TFLite Converter produces TFlite models with float interfaces (input and output ops are always float). This is a blocker for users who require TFlite models with pure int8 or uint8 inputs/outputs. Refer to https://github.com/tensorflow/tensorflow/issues/38285*\n",
        "\n",
        "In the following cell, we'll convert the model twice: once with quantization, once without."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1muAoUm8lSXL",
        "colab_type": "code",
        "outputId": "5ff328ef-73c5-45cd-e339-da52696b00e3",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "# Convert the model to the TensorFlow Lite format without quantization\n",
        "converter = tf.lite.TFLiteConverter.from_keras_model(model_2)\n",
        "model_no_quant_tflite = converter.convert()\n",
        "\n",
        "# # Save the model to disk\n",
        "open(MODEL_NO_QUANT_TFLITE, \"wb\").write(model_no_quant_tflite)\n",
        "\n",
        "# Convert the model to the TensorFlow Lite format with quantization\n",
        "def representative_dataset():\n",
        "  for i in range(500):\n",
        "    yield([x_train[i].reshape(1, 1)])\n",
        "# Set the optimization flag.\n",
        "converter.optimizations = [tf.lite.Optimize.DEFAULT]\n",
        "# Enforce full-int8 quantization (except inputs/outputs which are always float)\n",
        "converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]\n",
        "# Provide a representative dataset to ensure we quantize correctly.\n",
        "converter.representative_dataset = representative_dataset\n",
        "model_tflite = converter.convert()\n",
        "\n",
        "# Save the model to disk\n",
        "open(MODEL_TFLITE, \"wb\").write(model_tflite)"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "2512"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "8X1yO3h5pYbt",
        "colab_type": "text"
      },
      "source": [
        "### 2. Compare Model Sizes"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jAIe0dK3pXU8",
        "colab_type": "code",
        "outputId": "ce15b7eb-f857-4cb0-ba70-5a67ce04566b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 68
        }
      },
      "source": [
        "import os\n",
        "model_no_quant_size = os.path.getsize(MODEL_NO_QUANT_TFLITE)\n",
        "print(\"Model is %d bytes\" % model_no_quant_size)\n",
        "model_size = os.path.getsize(MODEL_TFLITE)\n",
        "print(\"Quantized model is %d bytes\" % model_size)\n",
        "difference = model_no_quant_size - model_size\n",
        "print(\"Difference is %d bytes\" % difference)"
      ],
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Model is 2736 bytes\n",
            "Quantized model is 2512 bytes\n",
            "Difference is 224 bytes\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "cR2OuokFpkEM",
        "colab_type": "text"
      },
      "source": [
        "Our quantized model is only 224 bytes smaller than the original version, which only a tiny reduction in size! At around 2.5 kilobytes, this model is already so small that the weights make up only a small fraction of the overall size, meaning quantization has little effect.\n",
        "\n",
        "More complex models have many more weights, meaning the space saving from quantization will be much higher, approaching 4x for most sophisticated models.\n",
        "\n",
        "Regardless, our quantized model will take less time to execute than the original version, which is important on a tiny microcontroller!"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "L_vE-ZDkHVxe",
        "colab_type": "text"
      },
      "source": [
        "### 3. Test the Models\n",
        "\n",
        "To prove these models are still accurate after conversion and quantization, we'll use both of them to make predictions and compare these against our test results:"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-J7IKlXiYVPz",
        "colab_type": "code",
        "outputId": "87d2fd39-4ddc-4f73-e164-e0089a5cfb59",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 281
        }
      },
      "source": [
        "# Instantiate an interpreter for each model\n",
        "model_no_quant = tf.lite.Interpreter(MODEL_NO_QUANT_TFLITE)\n",
        "model = tf.lite.Interpreter(MODEL_TFLITE)\n",
        "\n",
        "# Allocate memory for each model\n",
        "model_no_quant.allocate_tensors()\n",
        "model.allocate_tensors()\n",
        "\n",
        "# Get the input and output tensors so we can feed in values and get the results\n",
        "model_no_quant_input = model_no_quant.tensor(model_no_quant.get_input_details()[0][\"index\"])\n",
        "model_no_quant_output = model_no_quant.tensor(model_no_quant.get_output_details()[0][\"index\"])\n",
        "model_input = model.tensor(model.get_input_details()[0][\"index\"])\n",
        "model_output = model.tensor(model.get_output_details()[0][\"index\"])\n",
        "\n",
        "# Create arrays to store the results\n",
        "model_no_quant_predictions = np.empty(x_test.size)\n",
        "model_predictions = np.empty(x_test.size)\n",
        "\n",
        "# Run each model's interpreter for each value and store the results in arrays\n",
        "for i in range(x_test.size):\n",
        "  model_no_quant_input().fill(x_test[i])\n",
        "  model_no_quant.invoke()\n",
        "  model_no_quant_predictions[i] = model_no_quant_output()[0]\n",
        "\n",
        "  model_input().fill(x_test[i])\n",
        "  model.invoke()\n",
        "  model_predictions[i] = model_output()[0]\n",
        "\n",
        "# See how they line up with the data\n",
        "plt.clf()\n",
        "plt.title('Comparison of various models against actual values')\n",
        "plt.plot(x_test, y_test, 'bo', label='Actual values')\n",
        "plt.plot(x_test, predictions, 'ro', label='Original predictions')\n",
        "plt.plot(x_test, model_no_quant_predictions, 'bx', label='Lite predictions')\n",
        "plt.plot(x_test, model_predictions, 'gx', label='Lite quantized predictions')\n",
        "plt.legend()\n",
        "plt.show()"
      ],
      "execution_count": 20,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jWxvLGexKv0D",
        "colab_type": "text"
      },
      "source": [
        "We can see from the graph that the predictions for the original model, the converted model, and the quantized model are all close enough to be indistinguishable. This means that our quantized model is ready to use!"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HPSFmDL7pv2L",
        "colab_type": "text"
      },
      "source": [
        "## Generate a TensorFlow Lite for Microcontrollers Model\n",
        "Convert the TensorFlow Lite quantized model into a C source file that can be loaded by TensorFlow Lite for Microcontrollers."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "j1FB4ieeg0lw",
        "colab_type": "code",
        "outputId": "a2ba48f0-c440-409a-dad0-747a22ac3a64",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 476
        }
      },
      "source": [
        "# Install xxd if it is not available\n",
        "!apt-get update && apt-get -qq install xxd\n",
        "# Convert to a C source file\n",
        "!xxd -i {MODEL_TFLITE} > {MODEL_TFLITE_MICRO}\n",
        "# Update variable names\n",
        "REPLACE_TEXT = MODEL_TFLITE.replace('/', '_').replace('.', '_')\n",
        "!sed -i 's/'{REPLACE_TEXT}'/g_model/g' {MODEL_TFLITE_MICRO}"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Get:1 https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/ InRelease [3,626 B]\n",
            "Ign:2 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  InRelease\n",
            "Hit:3 http://archive.ubuntu.com/ubuntu bionic InRelease\n",
            "Get:4 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]\n",
            "Hit:5 http://ppa.launchpad.net/graphics-drivers/ppa/ubuntu bionic InRelease\n",
            "Ign:6 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  InRelease\n",
            "Hit:7 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64  Release\n",
            "Hit:8 https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64  Release\n",
            "Get:9 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]\n",
            "Get:10 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic InRelease [15.4 kB]\n",
            "Get:11 http://archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]\n",
            "Get:14 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic/main Sources [1,810 kB]\n",
            "Get:15 http://security.ubuntu.com/ubuntu bionic-security/restricted amd64 Packages [38.5 kB]\n",
            "Get:16 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages [873 kB]\n",
            "Get:17 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [1,368 kB]\n",
            "Get:18 http://security.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [835 kB]\n",
            "Get:19 http://archive.ubuntu.com/ubuntu bionic-updates/restricted amd64 Packages [57.5 kB]\n",
            "Get:20 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 Packages [1,176 kB]\n",
            "Get:21 http://ppa.launchpad.net/marutter/c2d4u3.5/ubuntu bionic/main amd64 Packages [873 kB]\n",
            "Fetched 7,301 kB in 3s (2,475 kB/s)\n",
            "Reading package lists... Done\n",
            "Selecting previously unselected package xxd.\n",
            "(Reading database ... 144568 files and directories currently installed.)\n",
            "Preparing to unpack .../xxd_2%3a8.0.1453-1ubuntu1.3_amd64.deb ...\n",
            "Unpacking xxd (2:8.0.1453-1ubuntu1.3) ...\n",
            "Setting up xxd (2:8.0.1453-1ubuntu1.3) ...\n",
            "Processing triggers for man-db (2.8.3-2ubuntu0.1) ...\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JvRy0ZyMhQOX",
        "colab_type": "text"
      },
      "source": [
        "## Deploy to a Microcontroller\n",
        "\n",
        "Follow the instructions in the [hello_world](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/micro/examples/hello_world) README.md for [TensorFlow Lite for MicroControllers](https://www.tensorflow.org/lite/microcontrollers/overview) to deploy this model on a specific microcontroller.\n",
        "\n",
        "**Reference Model:** If you have not modified this notebook, you can follow the instructions as is, to deploy the model. Refer to the [`hello_world/train/models`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/train/models) directory to access the models generated in this notebook.\n",
        "\n",
        "**New Model:** If you have generated a new model, then update the values assigned to the variables defined in [`hello_world/model.cc`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/micro/examples/hello_world/model.cc) with values displayed after running the following cell."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "l4-WhtGpvb-E",
        "colab_type": "code",
        "outputId": "ba008623-d568-43b1-a824-68adbe811567",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "# Print the C source file\n",
        "!cat {MODEL_TFLITE_MICRO}"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "unsigned char g_model[] = {\n",
            "  0x1c, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x12, 0x00,\n",
            "  0x1c, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x00,\n",
            "  0x00, 0x00, 0x18, 0x00, 0x12, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,\n",
            "  0x60, 0x09, 0x00, 0x00, 0xa8, 0x02, 0x00, 0x00, 0x90, 0x02, 0x00, 0x00,\n",
            "  0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x0c, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x08, 0x00,\n",
            "  0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,\n",
            "  0x13, 0x00, 0x00, 0x00, 0x6d, 0x69, 0x6e, 0x5f, 0x72, 0x75, 0x6e, 0x74,\n",
            "  0x69, 0x6d, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x00,\n",
            "  0x0c, 0x00, 0x00, 0x00, 0x48, 0x02, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00,\n",
            "  0x0c, 0x02, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00,\n",
            "  0x8c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,\n",
            "  0x2c, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0xfe, 0xfd, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x05, 0x00, 0x00, 0x00, 0x31, 0x2e, 0x35, 0x2e, 0x30, 0x00, 0x00, 0x00,\n",
            "  0x7c, 0xfd, 0xff, 0xff, 0x80, 0xfd, 0xff, 0xff, 0x84, 0xfd, 0xff, 0xff,\n",
            "  0x88, 0xfd, 0xff, 0xff, 0x22, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x04, 0x00, 0x00,\n",
            "  0x9f, 0x0a, 0x00, 0x00, 0x65, 0x06, 0x00, 0x00, 0x3d, 0xf8, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x00, 0xeb, 0x0a, 0x00, 0x00, 0x2f, 0xf8, 0xff, 0xff,\n",
            "  0xe8, 0x04, 0x00, 0x00, 0x21, 0x0a, 0x00, 0x00, 0x46, 0xfe, 0xff, 0xff,\n",
            "  0xc8, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa3, 0xf7, 0xff, 0xff,\n",
            "  0x28, 0xf9, 0xff, 0xff, 0x9a, 0x05, 0x00, 0x00, 0x6e, 0xfe, 0xff, 0xff,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x73, 0x1c, 0x11, 0xe1,\n",
            "  0x0c, 0x81, 0xa5, 0x43, 0xfe, 0xd5, 0xd5, 0xb2, 0x60, 0x77, 0x19, 0xdf,\n",
            "  0x8a, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x51, 0x0b, 0x00, 0x00, 0x47, 0xf6, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x9b, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0xe7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x92, 0x07, 0x00, 0x00, 0xf4, 0xf4, 0xff, 0xff, 0x55, 0xf0, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x00, 0xd6, 0xfe, 0xff, 0xff, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x01, 0x00, 0x00, 0xee, 0xfc, 0x00, 0xec, 0x05, 0x16, 0xef, 0xec,\n",
            "  0xe6, 0xf8, 0x03, 0x01, 0x00, 0xfa, 0xf8, 0xf5, 0xda, 0xeb, 0x27, 0x14,\n",
            "  0xef, 0xde, 0xe2, 0xda, 0xf0, 0xdf, 0x32, 0x06, 0x01, 0xe6, 0xee, 0xf9,\n",
            "  0x00, 0x16, 0x07, 0xe0, 0xfe, 0xff, 0xe9, 0x05, 0xe7, 0xef, 0x81, 0x1b,\n",
            "  0x18, 0xea, 0xca, 0x01, 0x0f, 0x00, 0xdb, 0xf7, 0x0e, 0xec, 0x12, 0x1e,\n",
            "  0x04, 0x13, 0xb2, 0xe7, 0xfd, 0x06, 0xbb, 0xe0, 0x0c, 0xec, 0xf0, 0xdf,\n",
            "  0xeb, 0xf7, 0x05, 0x26, 0x19, 0xe4, 0x70, 0x1a, 0xea, 0x1e, 0x34, 0xdf,\n",
            "  0x19, 0xf3, 0xf1, 0x19, 0x0e, 0x03, 0x1b, 0xe1, 0xde, 0x13, 0xf6, 0x19,\n",
            "  0xff, 0xf6, 0x1a, 0x17, 0xf1, 0x1c, 0xdb, 0x1a, 0x1a, 0x20, 0xe6, 0x19,\n",
            "  0xf5, 0xff, 0x97, 0x0b, 0x00, 0x00, 0xce, 0xdf, 0x0d, 0xf7, 0x15, 0xe4,\n",
            "  0xed, 0xfc, 0x0d, 0xe9, 0xfb, 0xec, 0x5c, 0xfc, 0x1d, 0x02, 0x58, 0xe3,\n",
            "  0xe0, 0xf4, 0x15, 0xec, 0xf9, 0x00, 0x13, 0x05, 0xec, 0x0c, 0x1c, 0x14,\n",
            "  0x0c, 0xe9, 0x0a, 0xf4, 0x18, 0x00, 0xd7, 0x05, 0x27, 0x02, 0x15, 0xea,\n",
            "  0xea, 0x02, 0x9b, 0x00, 0x0c, 0xfa, 0xe9, 0xea, 0xfe, 0x01, 0x14, 0xfd,\n",
            "  0x0b, 0x02, 0xf0, 0xef, 0x06, 0xee, 0x01, 0x0d, 0x06, 0xe7, 0xf7, 0x11,\n",
            "  0xf5, 0x0a, 0xf9, 0xf1, 0x23, 0xff, 0x0d, 0xf2, 0xec, 0x11, 0x26, 0x1d,\n",
            "  0xf2, 0xea, 0x28, 0x18, 0xe0, 0xfb, 0xf3, 0xf4, 0x05, 0x1c, 0x1d, 0xfb,\n",
            "  0xfd, 0x1e, 0xfc, 0x11, 0xe8, 0x06, 0x09, 0x03, 0x12, 0xf2, 0x35, 0xfb,\n",
            "  0xdd, 0x1b, 0xf9, 0xef, 0xf3, 0xe7, 0x6f, 0x0c, 0x1d, 0x00, 0x43, 0xfd,\n",
            "  0x0d, 0xf1, 0x0a, 0x19, 0x1a, 0xfa, 0xe0, 0x18, 0x1e, 0x13, 0x37, 0x1c,\n",
            "  0x12, 0xec, 0x3a, 0x0c, 0xb6, 0xcb, 0xe6, 0x13, 0xf7, 0xeb, 0xf1, 0x05,\n",
            "  0x1b, 0xfa, 0x19, 0xe5, 0xec, 0xcf, 0x0c, 0xf4, 0xe2, 0xff, 0xff, 0xff,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x21, 0xa2, 0x8c, 0xc9,\n",
            "  0x5f, 0x1d, 0xce, 0x41, 0x9f, 0xcd, 0x20, 0xb1, 0xdf, 0x53, 0x2f, 0x81,\n",
            "  0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xe2, 0xee, 0xff, 0xff,\n",
            "  0x80, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x54, 0x4f, 0x43, 0x4f,\n",
            "  0x20, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x2e, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xbc, 0xf9, 0xff, 0xff,\n",
            "  0x48, 0x01, 0x00, 0x00, 0x3c, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00,\n",
            "  0xb8, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x1a, 0xff, 0xff, 0xff, 0x02, 0x00, 0x00, 0x00,\n",
            "  0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0xca, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00,\n",
            "  0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,\n",
            "  0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x14, 0x00, 0x00, 0x00,\n",
            "  0x08, 0x00, 0x0c, 0x00, 0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0xba, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x0e, 0x00, 0x16, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00,\n",
            "  0x07, 0x00, 0x10, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08,\n",
            "  0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x06, 0x00, 0x08, 0x00, 0x07, 0x00, 0x06, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n",
            "  0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x10, 0x00, 0x04, 0x00,\n",
            "  0x08, 0x00, 0x0c, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xdc, 0x04, 0x00, 0x00,\n",
            "  0x54, 0x04, 0x00, 0x00, 0xc4, 0x03, 0x00, 0x00, 0x54, 0x03, 0x00, 0x00,\n",
            "  0xd0, 0x02, 0x00, 0x00, 0x4c, 0x02, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00,\n",
            "  0x5c, 0x01, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,\n",
            "  0x3c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0xff,\n",
            "  0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,\n",
            "  0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x0c, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,\n",
            "  0x0c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x0d, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f,\n",
            "  0x69, 0x6e, 0x70, 0x75, 0x74, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xc2, 0xfb, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xc4, 0xfc, 0xff, 0xff,\n",
            "  0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0xba, 0x2b, 0x4f, 0x38, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n",
            "  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n",
            "  0x73, 0x65, 0x5f, 0x34, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f,\n",
            "  0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x2a, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09,\n",
            "  0x6c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x2c, 0xfd, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xb9, 0x36, 0x0b, 0x3c,\n",
            "  0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n",
            "  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x34,\n",
            "  0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64,\n",
            "  0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74,\n",
            "  0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n",
            "  0xaa, 0xfc, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0x6c, 0x00, 0x00, 0x00,\n",
            "  0x09, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x9c, 0xfc, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,\n",
            "  0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0xaa, 0x7b, 0xbe, 0x3b, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x2e, 0xbd, 0xbd, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n",
            "  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33,\n",
            "  0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x2a, 0xfd, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,\n",
            "  0x28, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2c, 0xfe, 0xff, 0xff,\n",
            "  0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0xe3, 0x04, 0x20, 0x39, 0x20, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n",
            "  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n",
            "  0x73, 0x65, 0x5f, 0x33, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x5f,\n",
            "  0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x10, 0x00, 0x00, 0x00, 0x92, 0xfd, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09,\n",
            "  0x6c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x94, 0xfe, 0xff, 0xff, 0x14, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xe8, 0x76, 0x51, 0x3c,\n",
            "  0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n",
            "  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x33,\n",
            "  0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f, 0x52, 0x65, 0x61, 0x64,\n",
            "  0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x2f, 0x74,\n",
            "  0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n",
            "  0x12, 0xfe, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09, 0x6c, 0x00, 0x00, 0x00,\n",
            "  0x07, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x04, 0xfe, 0xff, 0xff, 0x30, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,\n",
            "  0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0xd2, 0x91, 0x43, 0x3c, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x40, 0xce, 0x42, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x19, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69,\n",
            "  0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32,\n",
            "  0x2f, 0x52, 0x65, 0x6c, 0x75, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x92, 0xfe, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x02, 0x5c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x94, 0xff, 0xff, 0xff,\n",
            "  0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x28, 0xb3, 0xd9, 0x38, 0x20, 0x00, 0x00, 0x00,\n",
            "  0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31,\n",
            "  0x2f, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74,\n",
            "  0x4d, 0x75, 0x6c, 0x5f, 0x62, 0x69, 0x61, 0x73, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0xff, 0xff,\n",
            "  0x00, 0x00, 0x00, 0x09, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00,\n",
            "  0x34, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x00, 0x00,\n",
            "  0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0xd5, 0x6b, 0x8a, 0x3b, 0x34, 0x00, 0x00, 0x00, 0x73, 0x65, 0x71, 0x75,\n",
            "  0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x31, 0x2f, 0x64, 0x65, 0x6e,\n",
            "  0x73, 0x65, 0x5f, 0x32, 0x2f, 0x4d, 0x61, 0x74, 0x4d, 0x75, 0x6c, 0x2f,\n",
            "  0x52, 0x65, 0x61, 0x64, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65,\n",
            "  0x4f, 0x70, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x73, 0x65,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x8a, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x09,\n",
            "  0x60, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,\n",
            "  0x04, 0x00, 0x00, 0x00, 0x7c, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00,\n",
            "  0x20, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x5d, 0x4f, 0xc9, 0x3c, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x0e, 0x86, 0xc8, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x12, 0x00, 0x00, 0x00, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x5f, 0x32, 0x5f,\n",
            "  0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x00, 0x00,\n",
            "  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x0e, 0x00, 0x18, 0x00, 0x08, 0x00, 0x07, 0x00, 0x0c, 0x00,\n",
            "  0x10, 0x00, 0x14, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,\n",
            "  0x6c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00,\n",
            "  0x10, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x14, 0x00, 0x04, 0x00, 0x08, 0x00,\n",
            "  0x0c, 0x00, 0x10, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,\n",
            "  0x24, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n",
            "  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1a, 0xde, 0x0a, 0x3c,\n",
            "  0x01, 0x00, 0x00, 0x00, 0x66, 0x64, 0x87, 0x3f, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x13, 0x42, 0x8d, 0xbf, 0x0d, 0x00, 0x00, 0x00, 0x49, 0x64, 0x65, 0x6e,\n",
            "  0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x74, 0x38, 0x00, 0x00, 0x00,\n",
            "  0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,\n",
            "  0x03, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,\n",
            "  0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x07, 0x00,\n",
            "  0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06,\n",
            "  0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00,\n",
            "  0x06, 0x00, 0x00, 0x00, 0x00, 0x72, 0x0a, 0x00, 0x0c, 0x00, 0x07, 0x00,\n",
            "  0x00, 0x00, 0x08, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09,\n",
            "  0x04, 0x00, 0x00, 0x00\n",
            "};\n",
            "unsigned int g_model_len = 2512;\n"
          ],
          "name": "stdout"
        }
      ]
    }
  ]
}